Koduj ciąg znaków do UTF-8

Mam String z "ñ" znakiem i mam z nim pewne problemy. Muszę zakodować ten String do kodowania UTF-8. Próbowałem tego w ten sposób, ale to'nie działa:

byte ptext[] = myString.getBytes();
String value = new String(ptext, "UTF-8");

Jak zakodować ten ciąg do utf-8?

A może by tak użyć

ByteBuffer byteBuffer = StandardCharsets.UTF_8.encode(myString)
Komentarze (6)
Rozwiązanie

Obiekty String w Javie używają kodowania UTF-16, które nie może'być modyfikowane.

Jedyną rzeczą, która może mieć inne kodowanie jest byte[]. Więc jeśli potrzebujesz danych UTF-8, to potrzebujesz byte[]. Jeśli masz String, który zawiera nieoczekiwane dane, to problem jest w jakimś wcześniejszym miejscu, które nieprawidłowo przekonwertowało dane binarne na String (tzn. użyło niewłaściwego kodowania).

Komentarze (4)

Użyj byte[] ptext = String.getBytes("UTF-8"); zamiast getBytes(). Funkcja getBytes() używa tak zwanego "domyślnego kodowania", które może nie być UTF-8.

Komentarze (5)