Как убрать акценты?

У меня есть приложение для Android, которое принимает файл ISO8859-1 (Latin1) с данными. По сути, португальские слова, символы которых я хочу преобразовать в неакцентированные аналоги.

Да, я много гуглил за это и пробовал

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

трюк, и да, я пытался также

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

но строка остается с ударением. Я также попытался возиться с кодировками проекта, но не уверен, где изменить (если это решение вообще).

2 ответа

Решение

Хорошо, я нашел ответ. Просто добавил "Latin1" при чтении InputStreamReader (кажется, что, несмотря на конфигурацию, он предполагал UTF-8 или что-то еще).

Вот как я сейчас читаю файл:

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

Мне нужно было добавить UnsupportedEncodingException.

Спасибо за предыдущие ответы,

L.

Как сказал Ауселен...

Не

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
Другие вопросы по тегам