Перейти к контенту

Конвертация Unicode в UTF-8 в Java

Сначала расскажу о Unicode и UTF-8 подробнее:

Unicode — это международный стандарт кодировки символов, который может представлять большинство письменных языков по всему миру. Юникод использует шестнадцатеричное для представления символа. Unicode — это 16-битная система кодирования символов. Наименьшее значение равно \ u0000, а самое высокое значение равно \ uFFFF.

 

UTF-8 — кодировка символов переменной ширины. UTF-8 может быть сжатым как ASCII, но также может содержать любые символы Юникода с некоторым увеличением размера файла. UTF расшифровывается как Unicode Transformation Format. «8» означает, что он выделяет 8-битные блоки для обозначения символа. Количество блоков, необходимых для представления символа, варьируется от 1 до 4.

Чтобы конвертировать Unicode в UTF-8 в Java, мы используем метод getBytes(). Он кодирует строку в последовательность байтов и возвращает массив байтов.

Объявление

Метод getBytes() объявляется следующим образом.

public byte[] getBytes(String charsetName)

где charsetName — это конкретный набор символов, с помощью которого String кодируется в массив байтов.

Давайте посмотрим программу для преобразования Unicode в UTF-8 в Java с использованием метода getBytes().

Пример 1

public class Example {
   public static void main(String[] args) throws Exception {
      String str1 = "\u0000";
      String str2 = "\uFFFF";
      byte[] arr = str1.getBytes("UTF-8");
      byte[] brr = str2.getBytes("UTF-8");
      System.out.println("UTF-8 for \\u0000");
      for(byte a: arr) {
         System.out.print(a);
      }
      System.out.println("\nUTF-8 for \\uffff" );
      for(byte b: brr) {
         System.out.print(b);
      }
   }
}

Итог

UTF-8 for \u0000
0
UTF-8 for \uffff
-17-65-65

Описание

  1. Мы создали две строки.
String str1 = "\u0000";
String str2 = "\uFFFF";
  1. Строка str1 назначается \ u0000, что является самым низким значением в Юникоде. Строке str2 присваивается значение \ uFFFF, которое является самым высоким значением в Юникоде.
  2. Чтобы преобразовать их в UTF-8, мы используем метод getBytes(«UTF-8»). Это дает нам массив байтов следующим образом —
byte[] arr = str1.getBytes("UTF-8");
byte[] brr = str2.getBytes("UTF-8");
  1. Затем для печати байтового массива мы используем расширенный цикл for следующим образом:
for(byte a: arr) {
   System.out.print(a);
}
for(byte b: brr) {
   System.out.print(b);
}
  1. Чтобы преобразовать UTF-8 в Unicode, мы создаем объект String, который имеет параметры в качестве имени массива байтов UTF-8, а charset — массив байтов, которым он является, то есть в UTF-8.

Пример 2

Давайте посмотрим программу для преобразования UTF-8 в Unicode путем создания нового объекта String.

public class Example {
   public static void main(String[] args) throws Exception {
      String str = "hey\u6366";
      byte[] charset = str.getBytes("UTF-8");
      String result = new String(charset, "UTF-8");
      System.out.println(result);
   }
}

Итог

hey捦

Сначала мы преобразовали данную строку Unicode в UTF-8 для последующей проверки с помощью метода getBytes() —

String str = "hey\u6366";
byte[] charset = str.getBytes("UTF-8")

Затем мы преобразовали байтовый массив charset в Unicode, создав новый объект String следующим образом:

String result = new String(charset, "UTF-8");
System.out.println(result);

Оцени статью

Средняя оценка / 5. Количество голосов:

Спасибо, помогите другим - напишите комментарий, добавьте информации к статье.

Или поделись статьей

Видим, что вы не нашли ответ на свой вопрос.

Помогите улучшить статью.

 

Пока нет комментариев.

Добавить комментарий

Ваш e-mail не будет опубликован.

СайдбарКомментарии (0)