2011-05-09 51 views
4

我有这样的方法来消除从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

我相信这是由于输入编码处理不当引起的。

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

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

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

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

参见: