Кодировать в UTF-8. Кодировать символ например. ö к ¶¶ - PullRequest
3 голосов
/ 15 мая 2019

Я хочу закодировать строку в Android в UTF-8. Например, эта строка:

Grüne Ähren beißen Flöhe

до

Grüne Ãhren beiÃen Flöhe

Но независимо от того, что я делаю, я кодирую ü в ü или ü в% C3% до н.э.

Найдены решения для преобразования в byte [] или URI.toASCIIString (). Но ни один из них не работает для меня.

UPDATE

Я участвую в партнерской сети eBay и пытаюсь добавить поисковое слово в URL моего партнера. Сотрудники eBay должны использовать неправильный набор символов, так как строка в кодировке URL UTF-8 не работает.

Поисковое слово с URL-кодировкой UTF-8

(Grüne Ähren beißen Flöhe

до

Gr% C3% BCne% 20% C3% 84hren% 20bei% C3% 9Fen% 20Fl% C3% B6he)

приводит к этому результату в окне поиска eBay:

Wrong encoding in eBay searchbox

Если я кодирую свое поисковое слово с помощью ISO_8859_1, оно работает (Grà Grne Ãhren beiÃen FlÃenhe):

Right encoding in eBay searchbox

Большое спасибо сообществу

1 Ответ

3 голосов
/ 15 мая 2019

По сути, вам нужно преобразовать строку в ее байтовое представление в соответствии с UTF-8 и интерпретировать эти байты, используя другую кодировку, например ISO-8859-1.

Это обычно является причиной многих проблем. Вы хотите намеренно делать то, что большинство разработчиков делают неправильно (или они просто игнорируют проблемы кодировок).

Поскольку вам просто нужно, чтобы это работало, используйте этот фрагмент кода:

byte[] bytes = "Grüne Ähren beißen Flöhe".getBytes("UTF-8");
String result = new String(bytes, "ISO-8859-1");

посмотри на работу здесь .

...