我有一个简单的表单,我可以输入一些字符。这些字符被发送到一个servlet,它执行getBytes并打印字节。 “ã”的正确UTF-8字节是-61和-93,但我得到-52和-93。 :(
我尽力了解并解决了这个问题,但没有任何效果。我机器上的所有东西都应该是UTF-8,所以我怀疑它与我使用20年的美国国际键盘有关。
任何聪明的灵魂都有从-52和-93来自哪里的线索?
在码头上固定:请参阅下面的答案。
Tomcat上的BROKEN:How to get tomcat to understand MacRoman (x-mac-roman) charset from my Mac keyboard?
答案 0 :(得分:9)
那是Mac OS Roman character encoding。 (0xBB == -52。)
要检查的一些事项:
getBytes(string, "UTF-8")
和new String(bytes, "UTF-8")
。response.setContentType("text/html; charset="UTF-8");
。在JSP <%@page pageEncoding="UTF-8"%>
<form action="..." accept-charset="UTF-8">
因为所有这些都无济于事:
在您的网络应用程序中设置request filtering(web-xml)。
在pom.xml中编码:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>...</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>...</version>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
...
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
答案 1 :(得分:3)
好的,经过8个小时(严重!)后,看起来让这种方法正常工作的唯一方法是:
其中一个问题是:糟糕的maven构建编码类文件的编译。
export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
mvn clean install
和
<%@page pageEncoding="UTF-8" %>
现在:
无法知道在pom.xml中传递后一个选项。