Java 替换所有非拉丁-1字符的API或方法

Java 替换所有非拉丁-1字符的API或方法,java,utf-8,replace,latin1,Java,Utf 8,Replace,Latin1,我正在处理一个第三方API/Web服务,他们只允许在XML中使用拉丁字符集。是否有现有的API/方法可以查找并替换字符串中的所有非拉丁-1字符 例如:凯文 凯文,还有什么办法吗?使用ICU4J public String removeAccents(String text) { return Normalizer.decompose(text, false, 0) .replaceAll("\\p{InCombiningDiacriticalMarks}

我正在处理一个第三方API/Web服务,他们只允许在XML中使用拉丁字符集。是否有现有的API/方法可以查找并替换字符串中的所有非拉丁-1字符

例如:凯文

凯文,还有什么办法吗?

使用ICU4J

public String removeAccents(String text) {
    return Normalizer.decompose(text, false, 0)
                 .replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}
我在网站上找到了这个例子


在java 1.6中,必要的规范化程序可能是内置的。

@bmargiles我更新了我的问题,所以您不想使用
Ké;vin
,将它们从字节流中删除(当您在简单的文本编辑器中打开它时),但实际上也将它们从XMl信息集中删除(当XMl解析器将其读取到应用程序时),用拉丁语-1(代码点233)定义。你确定这不是你想要的ASCII码吗?这是一个非常好的开始,至少对于给定的例子来说是这样。但是,无法保证结果仅为ASCII码,因为有些Unicode码点不会分解为ASCII字符并组合变音符号。如果你真的想处理所有不清楚的情况,你就必须编写代码。可能是ICU4J转码器对象。据我所知,没有什么能像把摄氏度转换成C,或者把字母大写字母L和笔划转换成L,或者检测不可转换的代码点并做出适当的反应,将其移除,中止操作,询问用户或其他任何事情。