2012-09-14 47 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

是的,這也適用於我。但從文件中讀取時不能...可能是編碼問題? –