У меня есть строка с символом "с", и с ней возникли некоторые проблемы. Мне нужно закодировать эту строку в кодировку UTF-8. Я пробовал использовать этот способ, но он не работает:
String объекты в Java используют кодировку UTF-16, которую нельзя изменить*.
Единственное, что может иметь другую кодировку, - это a byte[]. Итак, если вам нужны данные UTF-8, то вам нужен byte[]. Если у вас есть a String, который содержит неожиданные данные, то проблема в каком-то более раннем месте, которое неправильно преобразовало некоторые двоичные данные в a String (т. Е. Использовалось неправильное кодирование).
* Что касается реализации, String можно внутренне использовать кодировку ISO-8859-1, закодированную byte[] когда диапазон символов соответствует ей, но это специфичная для реализации оптимизация, которая не видна пользователям String (т. Е. вы никогда не заметите, если не покопаетесь в исходном коде или не воспользуетесь отражением для изучения String объекта).
Используйте byte[] ptext = String.getBytes("UTF-8"); вместо getBytes(). getBytes() использует так называемую "кодировку по умолчанию", которая может не соответствовать UTF-8.