Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux iconv无法从utf-8转换为iso-8859-1的原因_Linux_Utf 8_Iso_Iconv_Suse - Fatal编程技术网

Linux iconv无法从utf-8转换为iso-8859-1的原因

Linux iconv无法从utf-8转换为iso-8859-1的原因,linux,utf-8,iso,iconv,suse,Linux,Utf 8,Iso,Iconv,Suse,我的系统是SUSE Linux Enterprise Server 11 我正在尝试使用“iconv”将数据从utf-8格式转换为iso格式 你能帮我说一下吗? 谢谢。您的输入文件包含拉丁语1中不存在的字符。您可以使用-c选项跳过它们: iconv -c -futf8 -tl1 test.utf8 > test.iso 使用//translatit参数,将放置伪字符 iconv-f UTF-8-t ISO-8859-1//TRANSLIT test.utf8>test.ISO有时最好同时

我的系统是SUSE Linux Enterprise Server 11

我正在尝试使用“iconv”将数据从utf-8格式转换为iso格式

你能帮我说一下吗?
谢谢。

您的输入文件包含拉丁语1中不存在的字符。您可以使用
-c
选项跳过它们:

iconv -c -futf8 -tl1 test.utf8 > test.iso

使用
//translatit
参数,将放置伪字符


iconv-f UTF-8-t ISO-8859-1//TRANSLIT test.utf8>test.ISO

有时最好同时使用-c和//TRANSLIT,例如

$ cat rodriguez
Rodrı́guez

$ file rodriguez
rodriguez: UTF-8 Unicode text

$ iconv  --unicode-subst="<U+%04X>" -f UTF-8 -t ISO-8859-1 rodriguez
Rodr<U+0131><U+0301>guez

$ iconv -f UTF-8 -t ISO-8859-1 rodriguez
Rodr
iconv: rodriguez:1:4: cannot convert

$ iconv -f UTF-8 -t ISO-8859-1//TRANSLIT rodriguez
Rodri
iconv: rodriguez:1:5: cannot convert

$ iconv -c -f UTF-8 -t ISO-8859-1 rodriguez
Rodrguez

$ iconv -c -f UTF-8 -t ISO-8859-1//TRANSLIT rodriguez
Rodriguez
$cat罗德里格斯
罗德里格斯
$file罗德里格斯
罗德里格斯:UTF-8 Unicode文本
$iconv--unicode subst=“”-f UTF-8-t ISO-8859-1罗德里格斯
罗德格斯
$iconv-f UTF-8-t ISO-8859-1罗德里格斯
罗德尔
iconv:rodriguez:1:4:无法转换
$iconv-f UTF-8-t ISO-8859-1//Translatit rodriguez
罗德里
iconv:rodriguez:1:5:无法转换
$iconv-c-f UTF-8-t ISO-8859-1罗德里格斯
罗德格斯
$iconv-c-f UTF-8-t ISO-8859-1//Translatit rodriguez
罗德里格斯

看起来,从utf-8到iso的iconv不适用于某些特定的Unicode字符。我已经使用了选项——Unicode SuST= FrimeStand,它工作,不是完美的解决方案,而是满意的ICONV支持什么版本“Unicode SuST”?ICONV——版本ICONV(GNU LIBC)2.12版权(C)2010免费软件基金会,这是免费软件;有关复制条件,请参见源。没有担保;甚至不是为了适销性或适合某一特定目的。由Ulrich Drepper编写。是的,这个解决方案也很好,但我需要保持精确的行长度,所以我需要放置虚拟字符。它在Alpine Linux中不起作用,因为它使用更轻的iconv实现。
$ cat rodriguez
Rodrı́guez

$ file rodriguez
rodriguez: UTF-8 Unicode text

$ iconv  --unicode-subst="<U+%04X>" -f UTF-8 -t ISO-8859-1 rodriguez
Rodr<U+0131><U+0301>guez

$ iconv -f UTF-8 -t ISO-8859-1 rodriguez
Rodr
iconv: rodriguez:1:4: cannot convert

$ iconv -f UTF-8 -t ISO-8859-1//TRANSLIT rodriguez
Rodri
iconv: rodriguez:1:5: cannot convert

$ iconv -c -f UTF-8 -t ISO-8859-1 rodriguez
Rodrguez

$ iconv -c -f UTF-8 -t ISO-8859-1//TRANSLIT rodriguez
Rodriguez