4

我有一个简单的表格,我可以在其中输入一些字符。这些字符被发送到执行 getBytes 并打印字节的 servlet。“ã”的正确 UTF-8 字节是 -61 和 -93,但我得到 -52 和 -93。:(

我尝试了一切来理解和解决这个问题,但没有任何效果。我机器上的所有东西都应该是 UTF-8,所以我怀疑这与我使用了 20 年的美国国际键盘有关。

有没有聪明的灵魂知道-52和-93来自哪里?

固定在码头上:请参阅下面的答案。

Tomcat 上的故障:如何让 tomcat 从我的 Mac 键盘上理解 MacRoman (x-mac-roman) 字符集?

4

2 回答 2

9

那就是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>
于 2012-04-28T21:37:10.773 回答
3

好的,经过 8 个小时(严重!)后,看起来让这个正常工作的唯一方法是:

问题之一是:bad maven build encoding 类文件的编译。

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

和:

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

现在:

无法在 pom.xml 中传递后一个选项。

这是一个悬而未决的答案:为 clojure 源文件启用 UTF-8 编码

于 2012-04-28T23:33:14.517 回答