Всегда нужно быть готовым к тому, что кодировка входных данных из разных источников может различаться. Конечно, большинство используют операционную систему Windows, но не только. Go по умолчанию предполагает, что строки в программах будут в кодировке UTF-8. Если это не так, тогда их требуется декодировать, чтобы в дальнейшем можно было с ними работать. В данной инструкции показано, как читать и записывать файлы в других кодировках, помимо UTF-8.

Как использовать разные кодировками в Golang?

1. Создайте файл charset.go со следующим содержимым:

Форум Гоферов

Мы работаем над форумом для программистов на Golang. Очень нужны модераторы которые хотят помочь с ответами для новичков и помочь в развитии Go-сообщества.

Go на Форум

Уроки, статьи и Видео

Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.

Go в ВК Go в Telegram

2. Запустите код через go run charset.go;
3. Посмотрите на результат в терминале:

Конвертирование кодировки Windows-1251 в UTF-8

Пакет golang.org/x/text/encoding/charmap содержит константы типа указателя Charmap, что представляют наиболее часто используемые кодировки. Тип Charmap предоставляет методы для создания кодера и декодера для определенного набора символов. Encoder создает Writer для кодировки, что кодирует записанные байты в выбранную кодировку. Также Decoder может создать Reader для декодировки, что декодирует все данные для чтения из выбранной кодировки.

Также можете ознакомиться с инструкцией для изменения кодировки строки, символы которой не относятся к Unicode.