Как мне манипулировать 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
กระเป๋า สะพาย คอนเวิร์ส
Другие вопросы по тегам