我在尝试在数据库中插入特殊符号(如英镑字符(£ 或 ₤)时遇到问题。这些显示为 ??在前端
我们使用 tomcat 作为应用服务器,并在其中进行了以下配置
URIEncoding="UTF-8"
在将文本插入数据库之前,我们执行以下检查
String Text = new String(request.getParameter("Text").getBytes("8859_1"),"UTF-8");
我不太明白上面的代码是干什么的
但是当我从 tomcat server.xml 中删除 "URIEncoding="UTF-8"
时,这些字符加载正常
根据 http://confluence.atlassian.com/display/DOC/Configuring+Tomcat%27s+URI+encoding默认tomcat使用"ISO-8859-1"
编码
有人可以帮忙吗?
提前致谢
最佳答案
您要求 Tomcat 为您提供 UTF-8 格式的值,然后将其转换为基于 ISO-8859-1 字符集代码点的字节数组。然后,您直接将这些值转换回 UTF-8 代码点,这会导致字符出现乱码。
只需删除转换内容,在您的配置中保留 URIEncoding="UTF-8"
条目,它应该可以正常工作。
此外,请记住您的输出编码很重要。如果您发回 UTF-8 编码的页面,但在页面的元标记或 Content-Encoding
HTTP 响应 header 中设置了不同的编码,您将得到某些字符的乱码结果。
关于java - 英镑符号(£ 或 ₤)等字符的 URI 编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10638343/