首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iconv unicode未知输入格式

iconv unicode未知输入格式
EN

Stack Overflow用户
提问于 2011-10-07 22:12:16
回答 3查看 31.3K关注 0票数 8

我有一个在Unix下描述为:

代码语言:javascript
复制
$file xxx.csv 
xxx.csv: UTF-8 Unicode text, with very long lines

less/vi中查看它将呈现一些特殊的字符(?)无法读取(├╝);Windows也不会显示它;直接将其导入数据库只会将特殊字符更改为其他一些特殊字符(+ä,+ñ,...)。

我现在想用iconv把它转换成“默认的可读性”编码。当我尝试使用图标进行转换时

代码语言:javascript
复制
$iconv -f UTF-8 -t ISO-8859-1 xxx.csv > yyy.csv
iconv: illegal input sequence at position 1234

使用UNICODE作为输入,使用UTF-8作为输出将返回相同的消息

我猜这个文件在某种程度上是用另一种我不知道的格式编码的--我怎么才能找到哪种格式,以便将它转换成某种“普遍”可读的格式……

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-12 15:56:03

问题是Windows本身无法将该文件解释为UTF-8。它将其读作asci,然后ä变成2个字符的解释(ascii 195 164)

在尝试转换它时,我找到了一个适合我的解决方案:

代码语言:javascript
复制
iconv -f UTF-8 -t WINDOWS-1252//TRANSLIT --output=outfile.csv inputfile.csv

现在我可以在编辑器中正确地查看特殊字符了

对于SQLServer兼容性,将UTF8转换为UTF16将会更好地工作...只是文件大小增加了很多。

票数 5
EN

Stack Overflow用户

发布于 2013-09-23 20:44:34

只有当您的UTF-8文本只包含可以用ISO-8859-1表示的字符时,才能从UTF-8转换为ISO-8859-1。如果不是这样,您应该指定需要如何处理这些字符,忽略(//IGNORE)或近似(//TRANSLIT)它们。试试这两个中的一个:

代码语言:javascript
复制
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,等等。

票数 15
EN

Stack Overflow用户

发布于 2013-08-29 17:51:22

如果你不确定你处理的文件类型,你可以找到它,如下所示:

代码语言:javascript
复制
file file_name

上面的命令将为您提供文件格式。然后,可以相应地使用iconv。例如,如果文件格式是UTF-16,而您想要将其转换为UTF-8,则可以使用以下命令。

代码语言:javascript
复制
iconv -f UTF-16 -t UTF-8 file_name >output_file_name

希望这能让你对正在寻找的东西有更深入的了解。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7688464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档