我有一个在Unix下描述为:
$file xxx.csv
xxx.csv: UTF-8 Unicode text, with very long lines在less/vi中查看它将呈现一些特殊的字符(?)无法读取(├╝);Windows也不会显示它;直接将其导入数据库只会将特殊字符更改为其他一些特殊字符(+ä,+ñ,...)。
我现在想用iconv把它转换成“默认的可读性”编码。当我尝试使用图标进行转换时
$iconv -f UTF-8 -t ISO-8859-1 xxx.csv > yyy.csv
iconv: illegal input sequence at position 1234使用UNICODE作为输入,使用UTF-8作为输出将返回相同的消息
我猜这个文件在某种程度上是用另一种我不知道的格式编码的--我怎么才能找到哪种格式,以便将它转换成某种“普遍”可读的格式……
发布于 2011-10-12 15:56:03
问题是Windows本身无法将该文件解释为UTF-8。它将其读作asci,然后ä变成2个字符的解释(ascii 195 164)
在尝试转换它时,我找到了一个适合我的解决方案:
iconv -f UTF-8 -t WINDOWS-1252//TRANSLIT --output=outfile.csv inputfile.csv现在我可以在编辑器中正确地查看特殊字符了
对于SQLServer兼容性,将UTF8转换为UTF16将会更好地工作...只是文件大小增加了很多。
发布于 2013-09-23 20:44:34
只有当您的UTF-8文本只包含可以用ISO-8859-1表示的字符时,才能从UTF-8转换为ISO-8859-1。如果不是这样,您应该指定需要如何处理这些字符,忽略(//IGNORE)或近似(//TRANSLIT)它们。试试这两个中的一个:
iconv -f UTF-8 -t ISO-8859-1//IGNORE --output=outfile.csv inputfile.csv
iconv -f UTF-8 -t ISO-8859-1//TRANSLIT --output=outfile.csv inputfile.csv在大多数情况下,我猜近似是最好的解决方案,例如将重音字符映射到非重音字符,将欧元符号映射到EUR,等等。
发布于 2013-08-29 17:51:22
如果你不确定你处理的文件类型,你可以找到它,如下所示:
file file_name上面的命令将为您提供文件格式。然后,可以相应地使用iconv。例如,如果文件格式是UTF-16,而您想要将其转换为UTF-8,则可以使用以下命令。
iconv -f UTF-16 -t UTF-8 file_name >output_file_name希望这能让你对正在寻找的东西有更深入的了解。
https://stackoverflow.com/questions/7688464
复制相似问题