在java中将特殊字母转换为ascii字母

在java中将特殊字母转换为ascii字母,java,string,replace,ascii,letters,Java,String,Replace,Ascii,Letters,我尝试将带有特殊字母(如ä,á,è,ç,î,ñ.ö等)的字符串转换为ascii字母。 我的例子是: String newName = oldName.replaceAll("\\s","").replaceAll("[^a-zA-Z0-9]", ""); 这很好,除了所有的特殊字母都消失了。。。 有没有一种简单的方法将这些字母“转换”为ascii格式 例如,“弗朗索瓦·穆德”将变成“弗朗索瓦主义者”。 我应该如何实现这一点?一般来说,ASCII是一个非常糟糕的旧字符表,它实际上不包含需要的字符

我尝试将带有特殊字母(如ä,á,è,ç,î,ñ.ö等)的字符串转换为ascii字母。 我的例子是:

String newName = oldName.replaceAll("\\s","").replaceAll("[^a-zA-Z0-9]", "");
这很好,除了所有的特殊字母都消失了。。。 有没有一种简单的方法将这些字母“转换”为ascii格式

例如,“弗朗索瓦·穆德”将变成“弗朗索瓦主义者”。
我应该如何实现这一点?

一般来说,
ASCII
是一个非常糟糕的旧字符表,它实际上不包含需要的字符

但是你的问题呢,它与
ASCII
表无关。Java使用的是
unicode
。您需要的是将这些符号包括到您的regexp中,类似于
[^a-zA-Z0-9äèèñö]


核心问题是,像
a-z
a-z
(称为
符号类
)这样的常规结构不包括这种特殊的国家符号。您必须手动包含它们。

您可以尝试使用java.text.Normalizer.normalize()。此函数提供有关Unicode字符串规范化的服务。见这个问题: