当某个用户尝试查看我们的网页时,当我们调用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”的请求 header (用户浏览器似乎就是这样做的)时,我终于能够重现此错误。
这是网络服务器代码,因此我无法在此处进行任何更改,但我们可以采取一些措施来确保这种情况永远不会发生。我们可以明确强制网络服务器使用某种编码而不是根据请求来决定吗?
我是一名优秀的程序员,十分优秀!