我有一个小型的webapp,可以处理很多西班牙语文本。
代码中的某一点,JSP
页面会以Json
String
回复,其中包含部分此类文字。如果我将String
打印到控制台,它看起来像是乱七八糟。但是,如果我在Chrome开发者工具中检查响应的标题/内容,它看起来是正确的。它以正确的编码传输。 webapp的这一部分按预期运行。
在代码的另一个点,另一个JSP
页面以HTML
响应。其中一些HTML
包含更多西班牙文本。这一次,文本被转移(并显示)为乱码。
可能发生这种情况的潜在原因是什么?两次,我只是使用out.print
打印文本。为什么它在某一点上有效,而在其他方面却没有?
示例:
// In a file who's only output is the json string
String jsonString = ...
System.err.println(jsonString); // prints jibberish
out.println(jsonString); // looks correct when the response is viewed in Chrome Developer tools, and looks correct in a browser
...
// In a file who's output is a complete html page
String spanishText = ...
out.println("<label>" + spanishText + "</label>"); // looks like jibberish when the response is viewed in Chrome developer tools, and shows up as jibberish in a browser
答案 0 :(得分:1)
您需要设置JSP / Servlet响应用于打印字符的编码,并指示Web浏览器使用相同的编码。
这可以通过将其放在JSP的顶部来完成:
<%@ page pageEncoding="UTF-8" %>
或者如果您实际上是在Servlet中执行此操作:
response.setCharacterEncoding("UTF-8");
使用System.err
时的“乱码”是一个不同的问题。您需要设置用于打印此信息的控制台/日志文件的编码。如果它是例如Eclipse,则可以通过 Window&gt;设置它。偏好&gt;一般&gt;工作区&gt;文本文件编码。