我在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。在请求本身的每个特殊字符之前添加了一个加号字符“”。我该如何解决这个问题?
谢谢,
答案 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中找到更详细的背景信息和完整的代码解决方案。
希望这有帮助。