Wenn ein bestimmter Benutzer versucht, unsere Webseite anzuzeigen, wird eine NullPointerException mit der Nachricht 'charsetName' ausgelöst, wenn wir response.getWriter() aufrufen. Ich dekompilierten unsere Antwort-Klasse Web-Server (JRun 3.1) und festgestellt, dass dieser Fehler ausgelöst wird, wenn es tut dies:Java Servlet: Wie mit unbekannten Codierungen umgehen?
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!!!
}
war ich endlich in der Lage, diesen Fehler zu reproduzieren, wenn ich meinen Browser eine Anfrage-Header zu senden gezwungen 'Accept-Charset = x-mac-roman, utf-8', was der Browser des Benutzers zu tun scheint.
Dies ist Webserver-Code, so kann ich hier keine Änderungen vornehmen, aber das es etwas, das wir auf unserer Seite tun können, um sicherzustellen, dass dies nie passiert. Können wir den Webserver explizit zwingen, eine bestimmte Kodierung zu verwenden und diese nicht den Anfragen zu überlassen?