Convertendo do ascii para o formato utf-8 - iconv não está funcionando [fechado]

2

Eu tenho um requisito para converter de formato de texto ASCII para UTF-8.

Abaixo está o que estou executando por meio do comando iconv :

[root@main tmp]# cat File1
1
5
6
[root@main tmp]# file File1
File1: ASCII text
[root@main tmp]# iconv -f ascii -t utf-8 File1 > File2
[root@main tmp]# file File2
File2: ASCII text

(Ainda ASCII não utf-8)

Alguma sugestão sobre como convertê-lo de ascii para utf-8?

    
por Avinash 09.08.2013 / 09:22

2 respostas

5

Duas coisas que são relevantes aqui:

  1. o utilitário% stockfile no Solaris é uma droga
  2. Os caracteres ASCII de 7 bits são compatíveis com byte em UTF-8. Isso significa que quando seu arquivo de entrada contém apenas caracteres ASCII de 7 bits, nenhuma conversão real ocorre. E até mesmo um bom utilitário file exibiria ASCII.

Assim, você provavelmente deseja converter um arquivo em algum tipo de codificação ASCII de 8 bytes 'estendida'. Por exemplo, latin1 . Então você tem que especificá-lo com iconv, por exemplo:

$ iconv -f latin1 -t utf8 file1 > file2

Você pode comparar a saída assim:

$ cmp file1 file2
$ hexdump ...
$ $EDITOR file2

Editores como o vim fornecem alguns comandos para olhar os valores de bytes de certos caracteres, alterar a codificação usada na hora, etc.

    
por 09.08.2013 / 10:03
1

Se você realmente quer que file afirme que seu arquivo ASCII é UTF-8, que já é de qualquer maneira, você pode executar este comando que preends um UTF-8 BOM (marca de ordem de bytes) :

(printf "737";cat File1) > File2

Editar: alguns problemas:

  • Isso funcionará com a versão de localização normalmente fornecida com distribuições Linux, mas o Solaris file não detectará o arquivo como UTF-8, mas apenas "dados"

  • A lista de materiais pode confundir ferramentas usadas para processar o arquivo de texto

por 09.08.2013 / 10:05