Tomcat / Linux上的UTF-8和Servlet

我在Tomcat 6 / Linux上从servlet读取和编写UTF-8时遇到了一些问题。 请求和响应是utf-8,浏览器是utf-8,URIEncoding是在连接器和主机上的server.xml中设置的。 简而言之,代码本身对我来说每个已知的东西,服务器配置都是utf-8。

在读取请求时,我不得不从String中获取字节数组,然后再将该字节数组转换为String。 写入请求时,我必须写入字节,而不是字符串本身,以便得到正确的响应(否则我会得到一个exception,说明某些非ASCII字符无效ISO 8859-1)。

更改LANG环境变量是解决问题的一种方法。

官方的方法是在sevletfilter中设置字符编码: http ://wiki.apache.org/tomcat/Tomcat/UTF-8

一些背景信息: http : //www.crazysquirrel.com/computing/general/form-encoding.jspx

解决方案是将LANG环境变量设置为(在我的情况下)en_US.UTF-8,或者可能是任何其他UTF-8语言环境。 我仍然对这个事实感到困惑,我无法通过代码做任何事情来使我的servlet正常运行。 如果没有办法做到这一点,那就是我的观点中的一个错误。