Имам низ със символ "ñ" и имам някои проблеми с него. Трябва да кодирам този низ в кодиране UTF-8. Опитах да го направя по този начин, но не се получи:
byte ptext[] = myString.getBytes();
String value = new String(ptext, "UTF-8");
Как да кодирам този низ в UTF-8?
Какво ще кажете за използването на
ByteBuffer byteBuffer = StandardCharsets.UTF_8.encode(myString)
Обектите String
в Java използват кодиране UTF-16, което не може да се променя.
Единственото нещо, което може да има различно кодиране, е byte[]
. Така че, ако ви трябват данни в UTF-8, тогава ви трябва байт[]
. Ако имате String
, който съдържа неочаквани данни, тогава проблемът е на някое по-ранно място, което неправилно е преобразувало някои двоични данни в String
(т.е. използвало е неправилно кодиране).
Използвайте byte[] ptext = String.getBytes("UTF-8");
вместо getBytes()
. getBytes()
използва така нареченото "кодиране по подразбиране", което може да не е UTF-8.