JDK142_p6 - non-ascii encoding problem?

Sergei Komarov sk at pressevent.com
Thu May 20 14:05:21 PDT 2004


Hello,

I'm running FreeBSD 4.9-STABLE, jdk1.4.2_p6 and Tomcat 4.1.30 or 5.0.24
and keep having a problem with non-Latin1 characters output by JSPs.
This problem seems to be specific to FreeBSD as it doesn't occur on
Windows (I'm testing Solaris as well).

A JSP receives a request attribute containing a string of non-Latin1
characters (Cyrillic Windows, Simplified Chinese gb2312, etc.)

When the string is output within a page via c:out, struts bean:write or
<%=name%>, JspWriter converts all non-Latin1 chars to '?'. 

I can correct it with either of the following tricks, but the
application is too big to replicate them in all JSPs:
<%@page language="java"
        contentType="text/html;charset=gb2312"
        import= "java.nio.charset.*,
                 java.nio.CharBuffer,
                 java.nio.ByteBuffer"
%>
<%
String orig = (String) request.getAttribute("original");
String encoded =  new String(orig.getBytes("ISO-8859-1"),"gb2312");
%>
...
<%= encoded %>
...
<%
Charset gb2312 = Charset.forName("gb2312");
Charset iso = Charset.forName("ISO-8859-1");
CharBuffer cb = CharBuffer.wrap(orig);
ByteBuffer bb = iso.encode(cb);
%>
...
<%= gb2312.decode(bb) %>

Am I missing something in the configuration of FreeBSD and JDK? 

I tried setting 
LANGUAGE          zh_CN
LANG              zh_CN.gb2312
LC_TYPE           zh_CN
LC_ALL            zh_CN
MM_CHARSET        gb2312

In /etc/profile etc., but to no avail. Perhaps someone knows the
solution to this?

Thanks in advance,

Sergei Komarov 



More information about the freebsd-java mailing list