Класс Charset
Класс Charset из пакета java.nio.charset представляет
собой именованную кодировку символов. Он используется для
преобразования между последовательностями байтов и символами
Unicode. В первом параметре методов этого класса обычно передается
имя кодировки или объект Charset, во втором - данные для
преобразования. Класс является абстрактным, поэтому экземпляры
создаются через статические методы, такие как forName.
Синтаксис
Charset.forName(String charsetName)
charset.name()
charset.displayName()
charset.canEncode()
Пример
Давайте получим объект кодировки UTF-8 и выведем его каноническое имя и отображаемое имя:
import java.nio.charset.Charset;
public class Main
{
public static void main(String[] args)
{
Charset charset = Charset.forName("UTF-8");
System.out.println(charset.name());
System.out.println(charset.displayName());
}
}
Результат выполнения кода:
"UTF-8"
"UTF-8"
Пример
Давайте проверим, поддерживает ли кодировка US-ASCII кодирование символов, и получим кодировку по умолчанию:
import java.nio.charset.Charset;
public class Main
{
public static void main(String[] args)
{
Charset ascii = Charset.forName("US-ASCII");
System.out.println(ascii.canEncode());
Charset defaultCharset = Charset.defaultCharset();
System.out.println(defaultCharset.name());
}
}
Результат выполнения кода:
true
"UTF-8"
Пример
Давайте преобразуем строку в массив байтов и обратно с использованием кодировки UTF-8:
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
public class Main
{
public static void main(String[] args)
{
Charset charset = StandardCharsets.UTF_8;
String str = "abcde";
byte[] bytes = str.getBytes(charset);
String res = new String(bytes, charset);
System.out.println(res);
}
}
Результат выполнения кода:
"abcde"
Смотрите также
-
метод
forName,
который возвращает объект Charset по имени -
класс
StandardCharsets,
который содержит стандартные кодировки -
класс
InputStreamReader,
который читает байты и декодирует их в символы -
класс
OutputStreamWriter,
который кодирует символы в байты при записи