Of course, after crunching on this problem for two days, I figured
it out minutes after posting here.
The JSP in question was actually one of several that were included
together to generate a single page. I had only done the
<%@ page contentType="text/html;charset=UTF-8"%>
on the topmost JSP, which generates a
in the compiled JSP. The later JSPs, having not specified the
contentType, by default generate this call in their compiled state:
This overrides the previous call, so the browser tries to show the
page with the default encoding. Once I changed all the JSPs that
comprised the page to the correct content type, the page rendered
Of course, I didn't give you all enough information to see the
problem, so you're all off the hook. ;-)
I was misled by the javadoc for JspWriter, which reads
public abstract void print(java.lang.String s)
Print a string. If the argument is null then the string
"null" is printed. Otherwise, the string's characters are
converted into bytes according to the platform's default
character encoding, and these bytes are written in exactly
the manner of the Writer.write(int) method.
They are not converted according the the platform's default
character encoding at all, it seems, but rather according to
what you specify. Lesson learned.
Thanks for your consideration...