bash - 在 shell 中将 ANSI 转换为 UTF-8

标签 bash shell csv utf-8 iconv

我正在制作一个解析器(1 个 csv 到 3 个 csv)脚本,但我遇到了问题。 我是法国人,所以在我的语言中我有这样的字母:é è à ....

一位客户向我发送了一个 Linux 识别为“unknown-8bit”(我猜是 ansi)的 csv 文件。

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

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

iconv -f "windows-1252" -t "UTF-8" import.csv -o import.csv

问题是它破坏了我的 CSV。它现在只有一排。但是我的特殊字符没问题。有没有办法将 ANSI 转换为 UTF-8 并保留我的行?

最佳答案

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

iconv -f "windows-1252" -t "UTF-8" import.csv -o new_import.csv

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

关于bash - 在 shell 中将 ANSI 转换为 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20263909/

相关文章:

Linux 非阻塞 fifo(按需日志记录)

linux - 从文件中的多行添加整数

linux - 为什么我的 Linux 管道卡住了?

bash:分块处理文件列表

python - 使用 DictReader 从 CSV 文件读取到列表中

php - MySQL正则表达式按顺序匹配包含某些字段的多个CSV行

excel - 您可以在 CSV 中使用哪种日期格式,Excel 可以明确识别?

bash - 捕获 bash exec I/O 重定向中的错误输出

bash - 使用 sed、shell 或其他方式进行内联文本替换

python - 使用 Python 从 linux 命令行读取