У меня есть строка с символом «-», и у меня есть некоторые проблемы с ней. Мне нужно закодировать эту строку в кодировку UTF-8. Я попробовал это таким образом, но это не работает:
byte ptext[] = myString.getBytes();
String value = new String(ptext, "UTF-8");
Как мне закодировать эту строку в utf-8?
{In,Out}putStream{Read,Writ}ers
делать это за них. Интересно, почему?Ответы:
String
объекты в Java используют кодировку UTF-16, которую нельзя изменить.Единственное, что может иметь другую кодировку - это
byte[]
. Так что если вам нужны данные UTF-8, то вам нуженbyte[]
. Если у вас естьString
непредвиденные данные, то проблема в более раннем месте, которое неправильно преобразовало некоторые двоичные данные вString
(то есть использовалось неправильное кодирование).источник
byte[]
, это не имеет смыслаString
(если только кодировка не является UTF-16, в этом случае это имеет смысл, но это все еще ненужная информация).String objects in Java use the UTF-16 encoding that can't be modified.
У вас есть официальный источник этой цитаты?Как насчет использования
источник
myString.getBytes(Charsets.UTF_8)
и байты -> Stringnew String(myByteArray, Charsets.UTF_8)
.StandardCharsets.UTF_8
. Доступно в Java 1.7+.В Java7 вы можете использовать:
Это имеет преимущество перед тем,
getBytes(String)
что не объявляетthrows UnsupportedEncodingException
.Если вы используете более старую версию Java, вы можете объявить константы charset самостоятельно:
источник
String value = new String(myString);
.Используйте
byte[] ptext = String.getBytes("UTF-8");
вместоgetBytes()
.getBytes()
использует так называемую «кодировку по умолчанию», которая может не соответствовать UTF-8.источник
Строка Java всегда внутренне кодируется в UTF-16 - но вы действительно должны думать об этом так: кодирование - это способ перевода между строками и байтами.
Так что, если у вас есть проблема с кодировкой, к тому времени, когда у вас есть String, уже слишком поздно ее исправлять. Вам нужно исправить место, где вы создаете эту строку из файла, БД или сетевого подключения.
источник
Вы можете попробовать это так.
источник
Через мгновение я прошел эту проблему и сумел решить ее следующим образом
сначала мне нужно импортировать
Затем я должен был объявить константу для использования
UTF-8
иISO-8859-1
Тогда я мог бы использовать это следующим образом:
источник
и, если вы хотите читать из текстового файла с кодировкой «ISO-8859-1»:
источник
Я использовал код ниже, чтобы закодировать специальный символ, указав формат кодирования.
источник
Краткое пошаговое руководство по настройке кодировки по умолчанию для NetBeans UTF-8. В результате NetBeans создаст все новые файлы в кодировке UTF-8.
Пошаговое руководство по кодировке UTF-8 по умолчанию в NetBeans
Перейдите в папку etc в каталоге установки NetBeans.
Отредактируйте файл netbeans.conf
Найти строку netbeans_default_options
Добавьте -J-Dfile.encoding = UTF-8 внутри кавычек внутри этой строки
(пример:
netbeans_default_options="-J-Dfile.encoding=UTF-8"
)Перезапустите NetBeans
Вы устанавливаете кодировку по умолчанию NetBeans UTF-8.
Ваши netbeans_default_options могут содержать дополнительные параметры внутри кавычек. В таком случае добавьте -J-Dfile.encoding = UTF-8 в конце строки. Отделите его пробелом от других параметров.
Пример:
вот ссылка для получения дополнительной информации
источник
Это решило мою проблему
источник