作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有这种方法可以从 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。有没有想过什么可能会导致这个问题?
最佳答案
我认为这是由于输入编码处理不当造成的。
如果源中指定了输入字符串,则需要确保源的编码与编译器配置中的编码相匹配。请注意,Maven 需要将编译器编码单独配置为 pom.xml
中名为 project.build.sourceEncoding
的属性:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
...
</properties>
作为快速检查,您还可以用 Unicode 转义 (\uxxxx
) 替换字符串文字中的字符 - 如果问题是由源编码引起的,它应该会消失。
如果您从文件中读取输入日期,请确保您在代码中正确指定了文件的编码,并且不要使用依赖于系统默认编码的方法。
另请参阅:
关于java - 删除变音符号和平台问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5942388/
COW 不是奶牛,是 Copy-On-Write 的缩写,这是一种是复制但也不完全是复制的技术。 一般来说复制就是创建出完全相同的两份,两份是独立的: 但是,有的时候复制这件事没多大必要
我是一名优秀的程序员,十分优秀!