Android 如何去除口音?

Android 如何去除口音?,android,string,diacritics,Android,String,Diacritics,我有一个android应用程序,它接受一个带有数据的ISO8859-1(拉丁文1)文件。 基本上,是葡萄牙语单词,我想将其字符转换为不带重音的对应字符 是的,我为此搜索了很多,并尝试了 Normalizer.normalize(input, Normalizer.Form.NFD); 把戏,是的,我也试过了 String.replaceAll("[áâã]", "a").replaceAll(....).... 但字符串仍保持重音。我还尝试过修改项目编码,但不确定在哪

我有一个android应用程序,它接受一个带有数据的ISO8859-1(拉丁文1)文件。 基本上,是葡萄牙语单词,我想将其字符转换为不带重音的对应字符

是的,我为此搜索了很多,并尝试了

      Normalizer.normalize(input, Normalizer.Form.NFD);
把戏,是的,我也试过了

      String.replaceAll("[áâã]", "a").replaceAll(....)....
但字符串仍保持重音。我还尝试过修改项目编码,但不确定在哪里修改(如果这是一个解决方案的话)。

就像auselen说的那样

不是

但是

[编辑]

不要将string类用作要替换的对象。。。我刚刚测试了这段代码,它执行得非常完美

String weirdAs = "ábâcdeã";

String newString = weirdAs.replaceAll("[áâã]", "a");

Toast.makeText(_context,
            "New String: " + newString + " Weird As: " + weirdAs,
            Toast.LENGTH_LONG).show();
[编辑2]

只是为了好玩。。。这是一个logcat输出

09-14 09:16:23.502: I/Test(12022): Original String (Weird As): ábâcdeã
09-14 09:16:23.502: I/Test(12022): New String: abacdea

好的,我找到了答案。只是在读取InputStreamReader时添加了“Latin1”(看起来,尽管有配置,它还是假设了UTF-8或其他东西)

这就是我现在读取文件的方式:

 br = new BufferedReader(new InputStreamReader(new FileInputStream(Environment.BR_DB), "Latin1"));
我需要添加一个不支持的DencodingException

谢谢你之前的回答

L.

您知道在Java中字符串是不可变的,这些函数通常会返回一个新字符串,对吗?是的。对不起,我应该说得更清楚些。我做了newst=oldst.replaceAll(…)…是的,这对我也适用。但从文件中读取时不是。。。可能是编码问题?是的,检查编码类型。。。您可能最终使用了不支持原始字符集的格式。如果你输出你读到的内容(只要把它放在edittext或textview中,或者如果它对logcat来说太长的话),它会显示你期望的字符吗?事实上,我在logcat和textview中看到的都是一个(扭曲的)正方形,里面有一个问号,而不是“a”(期望值)或“ã”(错误,但期望值)。看来我需要改变一些编码。我的文件是ISO88569-1(拉丁文1)。我在“窗口>首选项>常规>工作区”中将编码设置为Latin1,但问题仍然存在:(如果您在本地计算机(使用文本编辑器)上打开文件本身,它是否显示这些字符?是否从一开始就以正确的编码保存?
 br = new BufferedReader(new InputStreamReader(new FileInputStream(Environment.BR_DB), "Latin1"));
L.