2015-03-19 4 views
-1

Я читаю имена юникода в golang. Мой элемент структуры имеет строку типа, но это неверно, я считаю.Как сохранить unicode в структуре Go (golang)

Есть ли пример того, как правильно хранить строки юникода в структуре golang?

Когда я читаю CSV-документ с помощью csv.NewReader и печатаю его на экран, он работает нормально, но один раз в структуре как строка он больше не печатает правильно. Это похоже на простую проблему с байтом/строкой, но мне трудно решить ее.

Я попытался использовать [] байт в структуре, но как же мне сделать сравнение строк laters и как я буду печатать этот [] байт в файл правильно? Поскольку я пишу файл как RDF, я подозреваю, что мне нужно конвертировать в UTF-8 или что-то еще?

ответ

3

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

Вы можете сделать это вручную, или использовать библиотеку третьей стороны, как go-charset

3

Это зависит от того, что вы имеете в виду под «Юникод». Ожидается, что все в Go будет UTF-8, включая тип данных string, поэтому, вероятно, вам нечего делать (пока вы работаете с UTF-8).

[]byte - всего лишь серия байтов. Это непрозрачно для данных, которые в нем. Вам не нужно делать ничего особенного, чтобы записать его в файл.

В stdlib есть пакеты unicode, unicode/utf8 и unicode/utf16. Там также пакет нормализации, если вам это нужно здесь: http://godoc.org/golang.org/x/text/unicode/norm

Этот блог может объяснить это более подробно, чем мы можем ответить здесь, и имеет некоторые ссылки на другие ресурсы: http://blog.golang.org/strings

+0

В дополнение к отличным блоге Я также рекомендую прочитать статью [Нормализация текста в Go] (https://blog.golang.org/normalization). –

Смежные вопросы