0

我正在尝试规范化具有重音字符的字符串。它在我的 intellij IDE 上运行良好,但是当我使用 maven 构建它并在 tomcat 中部署战争时,我得到了这样的意外结果。你能帮忙吗?

规范化的 Java 代码

String normalizedString = Normalizer.normalize(inputText, Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]", "");

来自 tomcat 日志的输出:

Input text = ůňa
Normalized String = AAa

当我在 IDE 中的本地机器上运行相同代码时的输出

Input text = ůňa
Normalized String = una

我需要在某处指定一些编码设置吗?

我的行家有这个:

#<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>

这存在于我在 tomcat 中的 server.xml 中

  <Connector port="8443" 
  protocol="org.apache.coyote.http11.Http11NioProtocol"
  SSLEnabled="true"
  maxThreads="150"
  scheme="https"
  secure="true"
  clientAuth="false"
  sslProtocol="TLS" 
  URIEncoding="UTF-8"
  />
4

1 回答 1

0

我能够解决这个问题。我正在从文件中读取数据,并且在读取文件时未提及编码。一旦我提出,问题就解决了

private static String inputStreamToString(InputStream is) throws IOException {
    StringBuilder sb = new StringBuilder();
    String line;
    BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
    while ((line = br.readLine()) != null) {
        sb.append(line);
    }
    br.close();
    return sb.toString();


}
于 2018-02-27T21:42:39.140 回答