[英]Handling Spanish characters in Java/JSP
我有一个小型的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
您需要设置JSP / Servlet响应用于打印字符的编码,并指示Web浏览器使用相同的编码。
可以通过将其放在JSP顶部来完成:
<%@ page pageEncoding="UTF-8" %>
或者,如果您实际上是在Servlet中执行此操作:
response.setCharacterEncoding("UTF-8");
使用System.err
时的“乱码”是一个不同的问题。 您需要设置用于打印此信息的控制台/日志文件的编码。 如果是Eclipse,则可以通过“ 窗口”>“首选项”>“常规”>“工作区”>“文本文件编码”进行设置 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.