iconv não pode converter entre CP1256 -t ISO-8859-6

2

Eu tentei converter a codificação CP1256 para ISO-8859-6 usando o Sygwin, mas ela não pode ser convertida!

e ajuda?

$ iconv -f CP1256 -t ISO-8859-6 cca.txt > cca1.txt

iconv: cca.txt:791:41: cannot convert

o resultado de sed -n '791p' cca.txt | od -c

é

    
por user1200219 03.11.2013 / 23:22

1 resposta

3

Se você olhar para os mapas de caracteres para Windows-1256 e ISO-8859-6 , você pode ver que 1256 tem um caractere em cada ponto, mas 8859-6 tem muitas lacunas. Então, ao converter, se houver um caractere que não esteja na codificação de destino, iconv irá reclamar.

Dependendo de qual versão de iconv você tem, você pode usar a opção -c , e esses caracteres não conversíveis serão descartados - o arquivo ficará mais curto. Ou você pode usar algo como --unicode-subst="@" , que substituirá os caracteres inválidos por @ , que é conversível. Observe que há bastante flexibilidade com essa substituição, incluindo a expansão (por exemplo, "[%u]" será convertida para o valor Unicode entre colchetes).

Se o Cygwin não tiver essas opções, você pode tentar um Linux ou Mac OS X recente.

Em qualquer caso, o arquivo resultante pode ter apenas caracteres que estão realmente em ISO-8859-6.

    
por 04.11.2013 / 00:57