在shell中将ANSI转换为UTF-8

Ner*_*gan 11 csv bash shell utf-8 iconv

我正在制作解析器(1 csv到3 csv)脚本,我遇到了问题.我是法国人所以用我的语言我有这样的信件:é è à ....

一位客户给我发了一个csv文件,Linux认为它是"unknown-8bit"(我想是ansi).

在我的脚本中,我正在编写3个新的csv文件.但是ViM将它们创建为ISO latin1,因为它与条目中的内容很接近,但是我é,è,à...已经破了.我需要UTF-8.

所以我尝试将第一个ANSI csv转换为UTF-8:

iconv -f "windows-1252" -t "UTF-8" import.csv -o import.csv
Run Code Online (Sandbox Code Playgroud)

问题是它破坏了我的CSV.它现在只有一排.但我的特殊角色还可以.有没有办法将ANSI转换为UTF-8并保留我的行?

Grz*_*Żur 28

将输出放入另一个文件.不要覆盖旧的.

iconv -f "windows-1252" -t "UTF-8" import.csv -o new_import.csv
Run Code Online (Sandbox Code Playgroud)

iconv 读取和写入同一文件时失败.

  • 使用moreutils中的海绵(其他Unix实用程序)来保持相同的名称:`iconv -f"windows-1252"-t"UTF-8"import.csv | 海绵import.csv` (5认同)