> Что такое кодировки текста, например UTF-8 и UTF-16 (Go)
Уровень: junior · Роль: backend · Категория: Технические вопросы
Компании: Orion_soft
Стек: Go
> Пример ответа
Кодировка текста - это правило, которое сопоставляет символы (буквы, цифры, знаки) с последовательностями байтов. В Go строки (string) являются неизменяемыми последовательностями байтов, но по умолчанию они интерпретируются как UTF-8. Это важно, потому что Go спроектирован с поддержкой UTF-8 на уровне языка: например, итерация по строке через for range автоматически декодирует руны (rune - это Unicode-кодовая точка, аналог int32).
UTF-8 - это кодировка переменной длины: символы ASCII (0–127) занимают 1 байт, а остальные символы Unicode - от 2 до 4 байтов. Это эффективно для текстов на латинице и популярно в вебе. В Go строка "Привет" в памяти будет занимать 12 байт (каждая кириллическая буква - 2 байта).
UTF-16 - тоже переменной длины, но использует 2 или 4 байта на символ. Чаще встречается в Windows и Java. В Go нет встроенного типа для UTF-16, но его можно обрабатывать через пакет unicode/utf16, например, при работе с API Windows.
Пример на Go:
GOpackage mainimport ("fmt""unicode/utf8")func main() {s := "Привет, мир!"fmt.Println("len (bytes):", len(s)) // 21 байт (каждая кириллица - 2 байта)fmt.Println("rune count:", utf8.RuneCountInString(s)) // 12 рунfor i, r := range s {fmt.Printf("%d: %c\n", i, r) // i - смещение в байтах}}
Вывод покажет, что индексы идут не подряд: для кириллицы шаг равен 2.
Практический совет: В Go всегда работайте с UTF-8, если нет явной необходимости в другой кодировке. Для конвертации используйте golang.org/x/text/encoding или стандартный пакет unicode/utf16.
> Похожие задачи по backend
Как фронтенд должен обрабатывать отсутствие ответа на POST запрос к API
Насколько комфортно совмещать написание кода и наставничество
В чем сложность работы с float в Go
За счет чего достигается параллелизм и кооперативность в Go
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью