删除变音符号和平台问题

时间:2011-05-09 20:54:45

标签: java utf-8 maven

我有这种方法从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。有什么可能导致这个问题的想法?

1 个答案:

答案 0 :(得分:1)

我认为这是由输入编码处理不当造成的。

如果在源中指定了输入字符串,则需要确保源的编码与编译器配置中的编码匹配。请注意,Maven需要单独配置编译器编码作为project.build.sourceEncoding中名为pom.xml的属性:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    ...
</properties>

作为快速检查,您还可以通过Unicode转义符(\uxxxx)替换字符串文字中的字符 - 如果问题是由源编码引起的,它应该会消失。

如果您从文件中读取输入日期,请​​确保在代码中正确指定文件的编码,并且不要使用依赖于系统默认编码的方法。

另见: