Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktPmStUn 66 of 522 menu
◀ ▶

Юникод в Kotlin

Буквам всех языков дают единые номера. Общий список таких номеров называется Юникодом (Unicode, единые номера букв для всех языков). У каждой буквы свой номер, один и тот же в разных программах.

Номер еще нужно разложить по байтам. Две обычные формы так и называются: UTF-8 и UTF-16.

В UTF-8 английская буква и цифра занимают 1 байт. Русская буква занимает 2 байта. Знак евро занимает 3 байта.

В UTF-16 английская буква, русская буква и знак евро занимают по 2 байта, 16 бит. Редкий символ за пределами этого набора занимает 4 байта и в UTF-8, и в UTF-16. В примерах этого раздела такие символы не используем.

В Kotlin строка хранит текст в UTF-16. Английская и русская буквы внутри строки одинаковы по размеру: обе по 2 байта. Форму UTF-8 используют файлы и страницы в сети. На размер строки в программе она не влияет.

Пять букв hello - это 5 символов и 10 байт строки в Kotlin. Пять букв котик - тоже 5 символов и 10 байт строки, хотя в UTF-8 они занимают 10 байт против 5 у hello. Две цифры в записи "12" - это два символа и 4 байта строки.

Одни и те же тексты в двух формах занимают разное число байт:

Текст Символов Байт в UTF-8 Байт в UTF-16
a 1 1 2
я 1 2 2
cat 3 3 6
кот 3 6 6
hello 5 5 10
котик 5 10 10
€ 1 3 2
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить