在JSP请求中添加了额外的Asciichar'Â'

时间:2009-12-06 19:42:07

标签: java jsp httprequest extended-ascii

我在tomcat& amp; jsp如下面的asp问题所列 Classic ASP gremlims, getting a  inserted into text whenever an HTML special character is used

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

谢谢,

5 个答案:

答案 0 :(得分:6)

这是通过将UTF-8页面显示为Latin-1引起的。例如,±在Latin-1中编码为0xB1,在UTF-8中编码为0xC2,0xB1。 0xC2碰巧是Â。

这对于JSP页面来说有点奇怪。通常,JSP将在编写器和“Content-Type”标头中使用相同的编码,因此您始终可以获得相同的编码。检查是否指定了这样的编码,

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

如果您有自定义的“Content-Type”标头,请确保附加“,charset = UTF-8”。

答案 1 :(得分:1)

这是ISO-Latin的症状 - 在出路时将任何源数据转码为UTF-8。检查你的角色编码。

答案 2 :(得分:1)

尝试

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

request.setCharacterEncoding("utf-8");

答案 3 :(得分:1)

我有一个类似的问题,现在似乎在更改以下&lt; meta&gt;之后修复了。 &lt; head&gt;中的行块。

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

这是重要的utf-8!

希望有所帮助。

答案 4 :(得分:0)

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

指定此字符编码需要几个步骤:解析GET查询参数(可在appserver设置中配置),解析POST请求正文(可在Filter的帮助下配置),写入响应流(可以通过JSP中的@page pageEncoding或Servlet中的HttpServletResponse#setCharacterEncoding()配置,读取/写入数据库(可在DB表本身中配置),读取/写入文件(使用InputStreamReader配置)和OutputStreamWriter)。

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

希望这有帮助。