【问题标题】:Recode utf8..cp1250 outcome in iso-8859-1在 iso-8859-1 中重新编码 utf8..cp1250 结果
【发布时间】:2016-05-05 12:33:14
【问题描述】:

我的 CSV 文件似乎以 UTF-8 正确编码。

   iconv -f UTF-8 file.csv -o /dev/null  # returns 0

当我尝试将文件重新编码为 cp1250(尝试重新编码/iconv 甚至 Perl)时,生成的文件以 iso-8859-1 编码 - 至少根据

   file -i resulting_file.csv
   resulting_file.csv: text/plain; charset=iso-8859-1

服务器上的区域设置是

   LANG=en_US.UTF-8
   LC_CTYPE="en_US.UTF-8"
   LC_NUMERIC="en_US.UTF-8"
   LC_TIME="en_US.UTF-8"
   LC_COLLATE="en_US.UTF-8"
   LC_MONETARY="en_US.UTF-8"
   LC_MESSAGES="en_US.UTF-8"
   LC_PAPER="en_US.UTF-8"
   LC_NAME="en_US.UTF-8"
   LC_ADDRESS="en_US.UTF-8"
   LC_TELEPHONE="en_US.UTF-8"
   LC_MEASUREMENT="en_US.UTF-8"
   LC_IDENTIFICATION="en_US.UTF-8"
   LC_ALL=

我不知道为什么。任何帮助表示赞赏,谢谢。

【问题讨论】:

    标签: shell encoding utf-8


    【解决方案1】:

    Iso-8895-1、iso-8895-15 和 Windows-1252 (CodePage1252) 字符集非常相似,只有少数字符和/或位置不同。例如,iso-8895-1 没有欧元 (€) 符号。 Windows-1252 和 -15 可以,但它映射到不同的字节。

    file 使用“魔术”查找来猜测编码。如果文本中不存在使这些字符集不同的字符,则file 无法区分这三者。

    听起来您确实有一些非 ASCII 拉丁字符,但不足以让 file 知道任何区别。

    不过,您可以高枕无忧 - 您的文件与 Windows-1252 编码兼容。

    【讨论】:

    • 你说得对,我的 CSV 包含几个捷克字符。当我强制 emacs 在 cp1250 中打开文件时,它看起来是正确的。我在 Linux 中处理过很多文本文件,但这是我的第一个检测错误的案例(我不是在谈论格式错误的文件)。谢谢你的答案。
    猜你喜欢
    • 1970-01-01
    • 2014-01-18
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多