【发布时间】:2009-06-05 17:24:21
【问题描述】:
当某个用户尝试查看我们的网页时,当我们调用 response.getWriter() 时,会引发带有消息“charsetName”的 NullPointerException。我反编译了我们的 Web 服务器的响应类(JRun 3.1),发现这样做时会抛出这个错误:
s = getCharacterEncoding(); // returns 'x-mac-roman' I believe
try
{
outWriter.exchangeWriter(new OutputStreamWriter(bufStream, s));
}
catch(UnsupportedEncodingException unsupportedencodingexception)
{
s = MIME2Java.convert(s); // looks like this returns null
outWriter.exchangeWriter(new OutputStreamWriter(bufStream, s)); // NPE!!!
}
当我强制我的浏览器发送“Accept-Charset=x-mac-roman,utf-8”的请求标头时,我终于能够重现此错误,这似乎是用户的浏览器所做的。
这是网络服务器代码,因此我无法在此处进行任何更改,但我们可以在此处做一些事情来确保这种情况永远不会发生。我们可以显式地强制网络服务器使用某种编码,而不是由请求决定吗?
【问题讨论】: