2

我在tomcat和jsp中面临同样的问题,如下面的asp问题 Classic ASP gremlims中列出的,每当使用HTML特殊字符时都会在文本中插入一个Â

使用tomcat 5和jsp。当我输入一个包含±20°C 的字符串并提交到另一个JSP 时,提交后的结果参数是±20°C。在请求本身的每个特殊字符之前都添加了一个附加字符 'Â'。我该如何解决这个问题?

谢谢,

4

5 回答 5

6

这是由于将 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”。

于 2009-12-06T21:15:29.977 回答
1

这就是 ISO-Latin-任何源数据在输出时被转码为 UTF-8 的症状。检查您的字符编码。

于 2009-12-06T19:44:50.267 回答
1

尝试

<%@ page pageEncoding="utf-8" %>

request.setCharacterEncoding("utf-8");
于 2009-12-06T19:52:00.957 回答
1

我有一个类似的问题,现在似乎在更改 <head> 块中的以下 <meta> 行后已修复。

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

重要的是utf-8!

希望有帮助。

于 2009-12-06T19:54:35.617 回答
0

byte要点:在涉及-转换的每个步骤中char,您需要在任何地方指定相同且正确的字符编码。涵盖世界上任何人的性格,UTF-8是一个完美的选择。

指定此字符编码需要几个步骤:解析GET查询参数(可在应用服务器设置中配置)、解析POST请求正文(可借助过滤器配置)、写入响应流(可借助@page pageEncodingJSP 或HttpServletResponse#setCharacterEncoding()Servlet 配置) ,读/写数据库(可在数据库表本身中配置),读/写文件(可使用InputStreamReaderand配置OutputStreamWriter)。

您可以在本文中找到更详细的背景信息和完整的代码解决方案。

希望这可以帮助。

于 2009-12-07T01:53:20.517 回答