去除变音符号和平台问题

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。我正在使用苹果提供的最新补丁Java 6版本。

我不知道IDE里面采用的是什么编码格式,但是它也是使用相同的Java。你认为可能会引起这个问题的原因是什么?

1个回答

1

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

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

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

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

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

另请参阅:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接