2

我有一个带有数据的 ISO8859-1 (Latin1) 文件的 android 应用程序。本质上,我想将其字符转换为无口音的葡萄牙语单词。

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

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

把戏,是的,我也试过

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

但字符串仍然是重音。我还尝试弄乱项目编码,但不确定在哪里更改(如果这是一个解决方案)。

4

2 回答 2

3

好的,我找到了答案。在读取 InputStreamReader 时刚刚添加了“Latin1”(似乎,尽管进行了配置,但它假设为 UTF-8 或其他内容)。

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

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

我需要添加一个 UnsupportedEncodingException。

Thanks for the previous answers,

L.
于 2012-09-21T04:10:56.387 回答
2

就像奥瑟伦说的...

不是

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
于 2012-09-14T12:25:28.683 回答