【问题标题】:Additional Ascii char 'Â' added in JSP request在 JSP 请求中添加了额外的 Ascii char 'Â'
【发布时间】:2009-12-06 19:42:07
【问题描述】:
【问题讨论】:
标签:
java
jsp
httprequest
extended-ascii
【解决方案1】:
这是由于将 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”。
【解决方案2】:
这是 ISO-Latin 的症状 - 无论源数据在输出时都被转码为 UTF-8。检查您的字符编码。
【解决方案3】:
试试
<%@ page pageEncoding="utf-8" %>
和
request.setCharacterEncoding("utf-8");
【解决方案4】:
我遇到了类似的问题,现在似乎在更改
块中的以下
行后已解决。
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
utf-8 很重要!
希望对您有所帮助。
【解决方案5】:
直截了当:在涉及byte-char 转换的每个步骤中,您需要在各处指定相同且正确的字符编码。要覆盖世界上的任何人类角色,UTF-8 是一个完美的选择。
指定此字符编码需要几个步骤:解析GET查询参数(可在应用服务器设置中配置)、解析POST请求正文(可借助过滤器配置)、写入响应流(可配置在 JSP 中的 @page pageEncoding 或 Servlet 中的 HttpServletResponse#setCharacterEncoding() 的帮助下),读/写数据库(可在 DB 表本身中配置),读/写文件(可使用 InputStreamReader 和 OutputStreamWriter 配置)。
您可以在this article找到更详细的背景信息和完整的代码解决方案。
希望这会有所帮助。