1

我在尝试在 DB 中插入特殊符号(如英镑字符(£ 或 ₤)时遇到问题。这些被显示为?? 在前端

我们使用 tomcat 作为应用服务器,并有以下配置

URIEncoding="UTF-8"

在将文本插入数据库之前,我们正在执行以下检查

String Text = new String(request.getParameter("Text").getBytes("8859_1"),"UTF-8");

我对上面的代码做了什么不太了解

但是当我"URIEncoding="UTF-8" 从 tomcat server.xml 中删除时,这些字符加载正常

根据 http://confluence.atlassian.com/display/DOC/Configuring+Tomcat%27s+URI+encoding默认tomcat使用"ISO-8859-1"编码

有人可以帮忙吗?

提前致谢

4

1 回答 1

3

您要求 Tomcat 为您提供格式化为 UTF-8 的值,然后将其转换为基于 ISO-8859-1 字符集代码点的字节数组。然后,您将这些值直接转换回 UTF-8 代码点,这会导致字符出现乱码。

只需删除转换内容,将URIEncoding="UTF-8"条目保留在您的配置中,它应该可以正常工作。

另外,请记住,您的输出编码很重要。如果您要发回 UTF-8 编码的页面,但在页面的元标记或Content-EncodingHTTP 响应标头中设置了不同的编码,您将得到某些字符的乱码结果。

于 2012-05-17T15:11:11.260 回答