我有一个带有数据的ISO8859-1(Latin1)文件的Android应用程序。 基本上,葡萄牙语单词的字符我想转换为未加重音的对应物。
是的,我为此搜索了很多内容,并尝试了
Normalizer.normalize(input, Normalizer.Form.NFD);
技巧,是的,我也试过
String.replaceAll("[áâã]", "a").replaceAll(....)....
但字符串仍然是重音。我也试过搞乱项目编码,但不知道在哪里改变(如果这是一个解决方案)。
答案 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.