我在tomcat和jsp中面临同样的问题,如下面的asp问题 Classic ASP gremlims中列出的,每当使用HTML特殊字符时都会在文本中插入一个Â
使用tomcat 5和jsp。当我输入一个包含±20°C 的字符串并提交到另一个JSP 时,提交后的结果参数是±20°C。在请求本身的每个特殊字符之前都添加了一个附加字符 'Â'。我该如何解决这个问题?
谢谢,
我在tomcat和jsp中面临同样的问题,如下面的asp问题 Classic ASP gremlims中列出的,每当使用HTML特殊字符时都会在文本中插入一个Â
使用tomcat 5和jsp。当我输入一个包含±20°C 的字符串并提交到另一个JSP 时,提交后的结果参数是±20°C。在请求本身的每个特殊字符之前都添加了一个附加字符 'Â'。我该如何解决这个问题?
谢谢,
这是由于将 UTF-8 页面显示为 Latin-1 造成的。例如,± 在 Latin-1 中编码为 0xB1,但在 UTF-8 中编码为 0xC2、0xB1。0xC2 恰好是 Â。
这对于 JSP 页面来说有点奇怪。通常,JSP 将在 writer 和“Content-Type”标头中使用相同的编码,因此您始终获得相同的编码。检查您是否指定这样的编码,
<%@page pageEncoding="UTF-8" %>
如果您有自定义的“Content-Type”标头,请确保附加“, charset=UTF-8”。
这就是 ISO-Latin-任何源数据在输出时被转码为 UTF-8 的症状。检查您的字符编码。
尝试
<%@ page pageEncoding="utf-8" %>
和
request.setCharacterEncoding("utf-8");
我有一个类似的问题,现在似乎在更改 <head> 块中的以下 <meta> 行后已修复。
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
重要的是utf-8!
希望有帮助。
byte
要点:在涉及-转换的每个步骤中char
,您需要在任何地方指定相同且正确的字符编码。涵盖世界上任何人的性格,UTF-8
是一个完美的选择。
指定此字符编码需要几个步骤:解析GET
查询参数(可在应用服务器设置中配置)、解析POST
请求正文(可借助过滤器配置)、写入响应流(可借助@page pageEncoding
JSP 或HttpServletResponse#setCharacterEncoding()
Servlet 配置) ,读/写数据库(可在数据库表本身中配置),读/写文件(可使用InputStreamReader
and配置OutputStreamWriter
)。
您可以在本文中找到更详细的背景信息和完整的代码解决方案。
希望这可以帮助。