[stringtemplate-interest] UTF-8 not displaying correctly

Terence Parr parrt at cs.usfca.edu
Mon Mar 15 11:50:03 PDT 2010


Hi. You have to tell ST to use a UTF-8 encoding. should be option to StringTemplateGroup or something.
Ter
On Mar 15, 2010, at 10:11 AM, Leo R. Lundgren wrote:

> Hi,
> 
> I am building a small servlet application using Eclipse, Tomcat 6, JRE  
> 1.6, ST 3.2. Here is a ViewHandler I'm using to wrap ST functionality:
> 
> 	public class ViewHandler {
> 		private StringTemplateGroup templateGroup;
> 		private Map<String, String> attributes = new HashMap<String,  
> String>();
> 
> 		public ViewHandler(String viewBasePath) {
> 			templateGroup = new StringTemplateGroup("default", viewBasePath);
> 		}
> 
> 		public void setAttribute(String name, String value) {
> 			attributes.put(name, value);
> 		}
> 
> 		public String getOutput(String viewName) {
> 			StringTemplate view = templateGroup.getInstanceOf(viewName);
> 			view.setAttributes(attributes);
> 			return view.toString();
> 		}
> 
> 		public void render(Writer out, String viewName) throws IOException {
> 			out.write(getOutput(viewName));
> 		}
> 	}
> 
> The handler is used like this in a servlet:
> 
> 	protected void doGet(HttpServletRequest request, HttpServletResponse  
> response) throws ServletException, IOException {
> 		super.doGet(request, response);
> 		
> 		String viewBasePath = getServletContext().getRealPath("/WEB-INF/ 
> view");
> 		ViewHandler viewHandler = new ViewHandler(viewBasePath);
> 		viewHandler.setAttribute("fileName", "test.png");
> 		viewHandler.setAttribute("contentTemplate", "uploadFile");
> 
> 		viewHandler.render(response.getWriter(), "index");
> 	}
> 
> It does what it is supposed to; The output I get is the contents of  
> the index.st template, with attributes replaced like they should be,  
> and the content template included as expected.
> 
> However, swedish characters such as åäö that are part of static  
> strings in the template files are shown in the browser(s) as question  
> marks. I know this indicates coding/charset problems. An example  
> string (from the template files) that is not displayed correctly is:
> 
> 	<input type="button" class="cancelUploadButton" value="Avbryt  
> insättning">
> 
> The 'ä' in the last word becomes a question mark in the browser.
> 
> 
> So, I have:
> - Checked the encoding settings in Eclipse, in all places I can find  
> that seem to relate to the source files and/or template files.
> - Checked the encoding of the related template files (both in their  
> properties and using an external editor that loads them fine as UTF-8).
> - Verified that the HTTP response headers say UTF-8 as the charset.  
> The same goes for the HTML code itself, it's UTF-8 all the way.
> 
> The only thing I haven't found to be apparently fine is when I open  
> the .java files from my project using another editor (TextMate, which  
> has always handled encodings fine for me); Normally TextMate displays  
> the encoding used/discovered from loading the file (for the template  
> files it says UTF-8), but for the Java source files it doesn't display  
> anything.
> However there are no static strings in the source files other than  
> template names and attributes, so I'm not sure that would matter. But  
> maybe it does, assuming there's something wrong with how the source  
> files are saved by eclipse.
> 
> Can someone shed some light on this issue? As I see it I've got UTF-8  
> everywhere (apart from possibly the Java source files, which I guess  
> could be the issue), and it should work. But maybe I need to change  
> something with regards to ST to have it work with UTF-8? If not, any  
> other ideas?
> 
> Thank you,
> 
> // Leo
> 
> _______________________________________________
> stringtemplate-interest mailing list
> stringtemplate-interest at antlr.org
> http://www.antlr.org/mailman/listinfo/stringtemplate-interest



More information about the stringtemplate-interest mailing list