2012-09-14 31 views
1

我有一个android应用程序需要带有数据的ISO8859-1(Latin1)文件。 基本上,葡萄牙语单词的字符我想转换为非重音对应。如何去除口音?

是的,我GOOGLE了很多关于这一点,并试图

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

伎俩,是的,我想也

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

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

+6

你知道,在Java中的字符串是不变的,这些功能通常返回一个新的字符串,对不对? – auselen

+0

当然。 (见下文) –

回答

2

好吧,我找到了答案。在阅读InputStreamReader时刚刚添加了“Latin1”(看起来,尽管配置,它假设为UTF-8或其他)。

因此,这是我现在该怎么读文件:

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

我需要添加一个UnsupportedEncodingException。

感谢以前的答案,

L. 
2

像auselen说...

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

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

[编辑]

不要使用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 
+0

是的。对不起,我应该更加明确。我做了newst = oldst.replaceAll(...).... –

+0

看到更新的答案... – RyanInBinary

+0

是的,这也适用于我。但从文件中读取时不能...可能是编码问题? –