我有这种方法从Java中删除字符串中的变音符号:
String nfdNormalizedString = Normalizer.normalize(str, Normalizer.Form.NFD);
Pattern pattern = Pattern.compile("\\p{InCombiningDiacriticalMarks}+");
return pattern.matcher(nfdNormalizedString).replaceAll("");
我有一些简单的测试用例。当我从IDE中运行它们时它们通过,但是当我从Maven中尝试它们时失败。我从命令行调用maven,我的环境编码是UTF-8。我正在运行Apple提供的Java 6最新补丁。
我不知道IDE中的编码是什么,但它使用相同的Java。有什么可能导致这个问题的想法?
答案 0 :(得分:1)
我认为这是由输入编码处理不当造成的。
如果在源中指定了输入字符串,则需要确保源的编码与编译器配置中的编码匹配。请注意,Maven需要单独配置编译器编码作为project.build.sourceEncoding
中名为pom.xml
的属性:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
...
</properties>
作为快速检查,您还可以通过Unicode转义符(\uxxxx
)替换字符串文字中的字符 - 如果问题是由源编码引起的,它应该会消失。
如果您从文件中读取输入日期,请确保在代码中正确指定文件的编码,并且不要使用依赖于系统默认编码的方法。
另见: