java - 英镑符号(£ 或 ₤)等字符的 URI 编码问题

标签 java jsp tomcat character-encoding

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

我们使用 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/

相关文章:

java - 如何从jsp中获取值

java - 如何从位于负载均衡器后面的 tomcat 服务器检索端口号

java - 在android中比较字符串

java - CheckBox声音停止

java - 如何将 Hadoop Reducer 的最终输出写入文本文件?

javascript - 如何使用javascript删除data-plugin属性

java方法没有返回正确的类型

tomcat - 监控 JDBC 连接

java - Tomcat URL 重写

java - 对于声明不起作用