Всегда нужно быть готовым к тому, что кодировка входных данных из разных источников может различаться. Конечно, большинство используют операционную систему Windows, но не только. Go по умолчанию предполагает, что строки в программах будут в кодировке UTF-8. Если это не так, тогда их требуется декодировать, чтобы в дальнейшем можно было с ними работать. В данной инструкции показано, как читать и записывать файлы в других кодировках, помимо UTF-8.
Как использовать разные кодировками в Golang?
1. Создайте файл charset.go
со следующим содержимым:
Рекомендуем вам супер TELEGRAM канал по Golang где собраны все материалы для качественного изучения языка. Удивите всех своими знаниями на собеседовании! 😎
Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
package main import ( "fmt" "io/ioutil" "os" "golang.org/x/text/encoding/charmap" ) func main() { // Запись строки в кодировке Windows-1252 encoder := charmap.Windows1252.NewEncoder() s, e := encoder.String("This is sample text with runes Š") if e != nil { panic(e) } ioutil.WriteFile("example.txt", []byte(s), os.ModePerm) // Декодировка в UTF-8 f, e := os.Open("example.txt") if e != nil { panic(e) } defer f.Close() decoder := charmap.Windows1252.NewDecoder() reader := decoder.Reader(f) b, err := ioutil.ReadAll(reader) if err != nil { panic(err) } fmt.Println(string(b)) } |
2. Запустите код через go run charset.go
;
3. Посмотрите на результат в терминале:
1 |
This is sample text with runes Š |
Конвертирование кодировки Windows-1251 в UTF-8
Пакет golang.org/x/text/encoding/charmap
содержит константы типа указателя Charmap
, что представляют наиболее часто используемые кодировки. Тип Charmap
предоставляет методы для создания кодера и декодера для определенного набора символов. Encoder
создает Writer
для кодировки, что кодирует записанные байты в выбранную кодировку. Также Decoder
может создать Reader
для декодировки, что декодирует все данные для чтения из выбранной кодировки.
Также можете ознакомиться с инструкцией для изменения кодировки строки, символы которой не относятся к Unicode.
Администрирую данный сайт с целью распространения как можно большего объема обучающего материала для языка программирования Go. В IT с 2008 года, с тех пор изучаю и применяю интересующие меня технологии. Проявляю огромный интерес к машинному обучению и анализу данных.
E-mail: vasile.buldumac@ati.utm.md
Образование
Технический Университет Молдовы (utm.md), Факультет Вычислительной Техники, Информатики и Микроэлектроники
- 2014 — 2018 Universitatea Tehnică a Moldovei, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Universitatea Tehnică a Moldovei, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»