【问题标题】:Converting ANSI to UTF-8 in shell在 shell 中将 ANSI 转换为 UTF-8
【发布时间】:2013-12-14 08:39:04
【问题描述】:

我正在制作一个解析器(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

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

【问题讨论】:

    标签: bash shell csv utf-8 iconv


    【解决方案1】:

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

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

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

    【讨论】:

    • 使用来自 moreutils(其他 Unix 实用程序)的海绵来保持相同的名称,如下所示:iconv -f "windows-1252" -t "UTF-8" import.csv | sponge import.csv
    • 我需要转换捷克语字幕,所以我不得不使用:CP1250 作为输入编码。
    • 为我工作了以下 iconv -f "windows-1252" -t "UTF-8" import.csv > new_import.csv
    猜你喜欢
    • 1970-01-01
    • 2012-01-08
    • 2015-11-22
    • 2017-07-21
    • 2019-02-10
    • 1970-01-01
    • 2015-10-06
    • 2010-11-30
    • 2013-02-11
    相关资源
    最近更新 更多