unix - iconv unicode未知输入格式

标签 unix encoding utf-8

我有一个在Unix下描述为的文件:

$file xxx.csv 
xxx.csv: UTF-8 Unicode text, with very long lines

less/vi查看它会导致某些特殊字符(ßÄ°...)不可读(├╝); Windows也不会显示它;将其直接导入到数据库中只会将特殊字符更改为其他一些特殊字符(+ä,+ñ,...)。

我现在想使用iconv将其转换为“默认可读”编码。
当我尝试使用iconv进行转换时
$iconv -f UTF-8 -t ISO-8859-1 xxx.csv > yyy.csv
iconv: illegal input sequence at position 1234

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

我猜该文件是以某种我不知道的其他格式编码的-我该如何找出哪种格式才能将其转换为“普遍”可读的格式...

最佳答案

仅当您的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

在大多数情况下,我认为近似是最好的解决方案,例如映射不带重音符号的重音符号,带欧元符号的欧元符号等...

关于unix - iconv unicode未知输入格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7688464/

相关文章:

linux - 如何在 Linux/Unix 上递归复制以 "abc"开头的目录?

php - 从 PHP 创建的 JSON 提供了错误的数据?

PHP内部编码

PHP在字符串中插入无意义的字符

javascript - 用普通的 ascii 字符替换重音字符

在基于 UNIX 的系统上使用 C 和 C++ 清除屏幕?

bash - unix 对 2 个字段的数字顺序进行排序

linux - sort -u 的意外结果

MySQL UTF8 问题

javascript - 在 JSONP 请求中设置响应内容类型 header ?