我在尝试在DB中插入像磅字符(£或₤)这样的特殊符号时遇到问题。这些显示为??在前端
我们使用tomcat作为app服务器并且在那里进行了以下的配置
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"
编码
有人可以帮忙吗?
先谢谢
答案 0 :(得分:3)
您要求Tomcat为您提供格式化为UTF-8的值,然后将其转换为基于ISO-8859-1字符集代码点的字节数组。然后,您将这些值直接转换回UTF-8代码点,这会导致字符变得混乱。
只需删除转换内容,将URIEncoding="UTF-8"
条目保留在配置中,它就可以正常工作。
另外,请记住输出编码很重要。如果您要发送回UTF-8编码的网页,但在网页的元标记或Content-Encoding
HTTP响应标头中设置的编码设置不同,那么您的结果会出现乱码字符。