如何使用 bash 处理包含 unicode(泰语)字符的 CSV?

How do I manipulating CSVs containing unicode (Thai) characters using bash?

我有一个包含泰语关键字的 Adwords 转储,我将使用它来连接来自另一个数据库的数据。

理论上,我抓取文件,剪掉顶部和底部无用的行,稍微清理一下,然后将其作为新文件上传到 PostgreSQL table。

实际上,即使文件在 Excel 和 OpenOffice 中打开正常,字符也会在途中(实际上,从一开始)出现乱码。以下在我的本地机器 (运行 OSX) 和服务器 (运行 Ubuntu) 上都是正确的。

首先,我已经将语言环境设置为 UTF-8:

 $ echo "กระเป๋า สะพาย คอนเวิร์ส"
 กระเป๋า สะพาย คอนเวิร์ส

但是,在 CLI 上查看 CSV(假设它只包含上述字符串)给我这样的信息:

$ head file.csv    
#0@2 *02" -@'4#L* 

知道问题出在哪里吗?

原始文件编码错误。

$ file file.csv
file.csv: Little-endian UTF-16 Unicode English text

快速修复:

$ iconv -f UTF-16 -t UTF-8 file.csv
$ head file.csv
กระเป๋า สะพาย คอนเวิร์ส