Servlet的会很奇怪字符与美国国际键盘上的Mac(Servlet gets weird char

2019-07-29 04:50发布

我有一个简单的形式,在那里我可以输入一些字符。 这些字符发送到一个servlet这做了的getBytes和打印的字节数。 一个“A”正确的UTF-8字节为-61和-93,但我得到-52和-93。 :(

我想尽一切办法了解和解决这个问题,但是毫无效果。 我的机器上一切都应该是UTF-8,所以我怀疑它与我已经用了20年的美国国际键盘做。

有没有任何智能的灵魂都从那里-52和-93线索来自来了?

固定在码头:见我的回答如下。

上破的Tomcat: 如何让Tomcat能够从我的Mac键盘明白的MacRoman(X-MAC-Roman)的字符集?

Answer 1:

这是的Mac OS罗马字符编码 。 (为0xBB == -52)。

有些事情要检查:

  • getBytes(string, "UTF-8")new String(bytes, "UTF-8")
  • 形式应在UTF-8已发出: response.setContentType("text/html; charset="UTF-8"); 。在JSP <%@page pageEncoding="UTF-8"%>
  • <form action="..." accept-charset="UTF-8">

由于所有没有帮助:

设置请求过滤在Web应用程序(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>


Answer 2:

好了,好后8小时(!严重),它看起来像只有这样,才能得到这个工作正常是要做到:

其中一个问题是:类文件的坏Maven构建编码编译。

export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
mvn clean install

和:

   <%@page pageEncoding="UTF-8" %>

现在:

有没有办法可知通过后面的选项在你的pom.xml。

下面是一个未决的答案: 用于Clojure的源文件使UTF-8编码



文章来源: Servlet gets weird character with US International keyboard on Mac