Shell 将utf8..cp1250结果重新编码到iso-8859-1中

Shell 将utf8..cp1250结果重新编码到iso-8859-1中,shell,encoding,utf-8,Shell,Encoding,Utf 8,我有一个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=

我有一个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=

我不明白为什么。非常感谢您的帮助。

Iso-8895-1、Iso-8895-15和Windows-1252(代码页1252)字符集非常相似,只是在一些字符和/或位置上有所不同。例如,iso-8895-1没有欧元符号。Windows-1252和-15可以,但它被映射到不同的字节

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

当然,听起来您有一些非ASCII拉丁字符,但还不足以让
文件
知道任何差异


不过,您可以放心—您的文件与Windows-1252编码兼容

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

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

当然,听起来您有一些非ASCII拉丁字符,但还不足以让
文件
知道任何差异


不过,您可以放心—您的文件与Windows-1252编码兼容

你说得对,我的CSV包含几个捷克字符。当我强制emacs在cp1250中打开文件时,它看起来是正确的。我在Linux中处理过很多文本文件,但这是我第一次发现错误(我不是说格式错误的文件)。谢谢你的回答。你是对的,我的CSV包含几个捷克字符。当我强制emacs在cp1250中打开文件时,它看起来是正确的。我在Linux中处理过很多文本文件,但这是我第一次发现错误(我不是说格式错误的文件)。谢谢你的回答。