Кодировать строку в UTF-8

У меня есть строка с символом «-», и у меня есть некоторые проблемы с ней. Мне нужно кодировать эту кодировку String для UTF-8. Я пробовал это таким образом, но он не работает:

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

Как кодировать эту строку в utf-8?

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

Единственное, что может иметь различное кодирование, это byte[] . Поэтому, если вам нужны данные UTF-8, вам понадобится byte[] . Если у вас есть String , содержащая неожиданные данные, проблема в некотором более раннем месте, которая неправильно преобразует некоторые двоичные данные в String (т. Е. Использует неправильную кодировку).

Как насчет использования

 ByteBuffer byteBuffer = StandardCharsets.UTF_8.encode(myString) 

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

В Java7 вы можете использовать:

 import static java.nio.charset.StandardCharsets.*; byte[] ptext = myString.getBytes(ISO_8859_1); String value = new String(ptext, UTF_8); 

Это имеет преимущество перед getBytes(String) что он не объявляет об throws UnsupportedEncodingException .

Если вы используете более старую версию Java, вы можете сами объявить константы набора символов:

 import java.nio.charset.Charset; public class StandardCharsets { public static final Charset ISO_8859_1 = Charset.forName("ISO-8859-1"); public static final Charset UTF_8 = Charset.forName("UTF-8"); //.... } 

Строка Java всегда всегда кодируется в UTF-16, но вы действительно должны думать об этом так: кодирование – это способ перевода между строками и байтами.

Поэтому, если у вас есть проблема с кодировкой, к тому времени, когда у вас есть String, слишком поздно исправлять. Вам нужно исправить место, где вы создаете эту строку из файла, DB или сетевого подключения.

Вы можете попробовать это.

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

и, если вы хотите прочитать из текстового файла с кодировкой «ISO-8859-1»:

 String line; String f = "C:\\MyPath\\MyFile.txt"; try { BufferedReader br = Files.newBufferedReader(Paths.get(f), Charset.forName("ISO-8859-1")); while ((line = br.readLine()) != null) { System.out.println(new String(line.getBytes("UTF-8"))); } } catch (IOException ex) { //... } 

У меня есть код ниже, чтобы закодировать специальный символ, указав формат кодировки.

 String text = "This is an example é"; byte[] byteText = text.getBytes(Charset.forName("UTF-8")); //To get original string from byte. String originalString= new String(byteText , "UTF-8"); 

Через минуту я прошел эту проблему и сумел решить ее следующим образом

сначала мне нужно импортировать

 import java.nio.charset.Charset; 

Затем мне пришлось объявить константу для использования UTF-8 и ISO-8859-1

 private static final Charset UTF_8 = Charset.forName("UTF-8"); private static final Charset ISO = Charset.forName("ISO-8859-1"); 

Тогда я мог бы использовать его следующим образом:

 String textwithaccent="Thís ís a text with accent"; String textwithletter="Ñandú"; text1 = new String(textwithaccent.getBytes(ISO), UTF_8); text2 = new String(textwithletter.getBytes(ISO),UTF_8); 

Это решило мою проблему

  String inputText = "some text with escaped chars" InputStream is = new ByteArrayInputStream(inputText.getBytes("UTF-8")); 
  • Байт UTF-8 для строки
  • Разве это не на больших байтовых машинах UTF-8, отличных от маленьких конечных машин? Так почему же тогда UTF-8 не требует спецификации?
  • UTF-8, UTF-16 и UTF-32
  • Программирование на языке C: как программировать для Unicode?
  • Значок байтового байта закручивает чтение файлов в Java
  • Сохранить текстовый файл UTF-8, закодированный с помощью VBA
  • кириллица в Windows Console (java) System.out.println ();
  • Что такое внутреннее представление Java для String? Изменен UTF-8? UTF-16?
  • Проблемы с OS X Terminal UTF-8
  • Как удалить акценты в MySQL?
  • Кодировка символов JSON - поддерживается UTF-8 браузерами или мне нужно использовать числовые escape-последовательности?
  • Давайте будем гением компьютера.