Как убрать акценты?
У меня есть приложение для 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