Как мне манипулировать CSV, содержащими символы юникода (тайские), используя bash?
У меня есть дамп AdWords, содержащий тайские ключевые слова, которые я буду использовать для объединения данных из другой БД.
Теоретически я беру файл, отсекаю ненужные строки сверху и снизу, немного его очищаю и загружаю в PostgreSQL как новую таблицу.
На практике символы искажаются в пути (на самом деле, с самого начала), даже если файл прекрасно открывается в Excel и OpenOffice. Ниже верно как для моей локальной машины (под управлением OSX), так и для сервера (под управлением Ubuntu).
Во-первых, я уже установил свой язык на UTF-8:
$ echo "กระเป๋า สะพาย คอนเวิร์ส"
กระเป๋า สะพาย คอนเวิร์ส
Однако, глядя на CSV (давайте предположим, что он содержит только приведенную выше строку) в CLI, я получу следующее:
$ head file.csv
#0@2 *02" -@'4#L*
Есть идеи, где проблема?
1 ответ
Решение
Исходный файл был в неправильной кодировке.
$ file file.csv
file.csv: Little-endian UTF-16 Unicode English text
Быстрая починка:
$ iconv -f UTF-16 -t UTF-8 file.csv
$ head file.csv
กระเป๋า สะพาย คอนเวิร์ส