如何剥离口音?

时间:2012-09-14 12:20:08

标签: android string diacritics

我有一个带有数据的ISO8859-1(Latin1)文件的Android应用程序。 基本上,葡萄牙语单词的字符我想转换为未加重音的对应物。

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

      Normalizer.normalize(input, Normalizer.Form.NFD);

技巧,是的,我也试过

      String.replaceAll("[áâã]", "a").replaceAll(....)....

但字符串仍然是重音。我也试过搞乱项目编码,但不知道在哪里改变(如果这是一个解决方案)。

2 个答案:

答案 0 :(得分:2)

就像auselen说的那样......

String.replaceAll("[áâã]", "a").replaceAll(....)

但是

value = String.replaceAll("[áâã]", "a").replaceAll(....)

[编辑]

不要使用字符串类作为要替换的对象...我刚刚测试了这段代码并且它执行得非常完美......

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

答案 1 :(得分:2)

好的,我找到了答案。刚刚添加" Latin1"当读取InputStreamReader时(似乎,尽管配置,它假设UTF-8或其他)。

所以这就是我现在阅读文件的方式:

 br = new BufferedReader(new InputStreamReader(new FileInputStream(Environment.BR_DB), "Latin1"));

我需要添加UnsupportedEncodingException。

感谢您之前的回答,

L.