Кодиране на низ в UTF-8

Имам низ със символ "ñ" и имам някои проблеми с него. Трябва да кодирам този низ в кодиране UTF-8. Опитах да го направя по този начин, но не се получи:

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

Как да кодирам този низ в UTF-8?

Какво ще кажете за използването на

ByteBuffer byteBuffer = StandardCharsets.UTF_8.encode(myString)
Коментари (6)
Решение

Обектите String в Java използват кодиране UTF-16, което не може да се променя.

Единственото нещо, което може да има различно кодиране, е byte[]. Така че, ако ви трябват данни в UTF-8, тогава ви трябва байт[]. Ако имате String, който съдържа неочаквани данни, тогава проблемът е на някое по-ранно място, което неправилно е преобразувало някои двоични данни в String (т.е. използвало е неправилно кодиране).

Коментари (4)

Използвайте byte[] ptext = String.getBytes("UTF-8"); вместо getBytes(). getBytes() използва така нареченото "кодиране по подразбиране", което може да не е UTF-8.

Коментари (5)