Не каждому известно, что кодировкой содержимого файлов .go является UTF-8. Однако, это не единственная возможная кодировка. К примеру, пользователи Windows зачастую используют кодировку Windows-1250.

При работе со строками не в Юникоде вам нужно будет перевести содержимое в Юникод. Далее дана инструкция для кодирования и декодирования строк в Юникод и наоборот.

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

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

Go на Форум

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

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

Go в ВК Go в Telegram

Как поменять кодировку строки в Golang?

1. Создайте файл win1250.txt с содержимым Gdańsk. Кодировкой файла должна быть windows-1250. Если вы не знаете, как это сделать, перейдите к шагу 4 и после выполнения шага 5, где создается файл в кодировке windows-1250, вы можете переименовать файл out.txt, а затем вернуться к шагу 2;
2. Создайте файл decode.go со следующим содержимым:

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

кодировка golang

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

6. Запустите код через go run encode.go;
7. Посмотрите на вывод в файле out.txt с кодировкой Windows-1250 и UTF-8.

Как создать код для замены кодировки в файле Go?

В пакете charmap есть тип Charset для простого изменения кодировки туда и обратно. Тип имплементирует NewDecoder, что создает структуру Decoder.

В шагах 1-3 показывается использование декодирования через Reader.

Кодирование работает аналогичным образом. Кодирование Writer создается, затем каждая строка записывается данным Writer и кодируется в кодировку Windows-1250.

Обратите внимание, что кодировка Windows-1250 была выбрана в качестве примера. В данном пакете есть многие другие варианты кодировки символов.

Понравилась статья?

Поддержи наш проект, чтобы мы могли создать больше хорошего контента!