2012-07-03 50 views
30

Tengo un archivo árabe codificado en ISO8859-15. ¿Cómo puedo convertirlo en UTF8?
He usado iconv pero no funciona para mí.Cómo convertir ISO8859-15 a UTF8?

iconv -f ISO-8859-15 -t UTF-8 Myfile.txt 

Quería adjuntar el archivo, pero no sé cómo.

+5

¿El 'iconv' imprimir un mensaje de error, o se convierte de forma incorrecta? (Por cierto, es posible que * acepte * más de las respuestas que haya recibido a preguntas anteriores. Los contestadores lo agradecerán). – thb

+0

No, no se imprime un error. Quiero decir que convierte el archivo incorrectamente. Comprobé la codificación del archivo y lo encontré ISO-8859-15. – Hakim

+0

¿cómo determinaste que era ISO-8895-15? – pizza

Respuesta

33

¿Podría ser que su archivo no esté codificado en ISO-8859-15? Usted debe ser capaz de verificar con el comando file:

file YourFile.txt

Además, se puede utilizar iconv sin proporcionar la codificación del archivo original:

iconv -t UTF-8 YourFile.txt

+0

¿Cómo podría el comando de archivo poder decirle qué codificación es la adecuada para comprender el contenido del archivo? –

+2

@ThorstenStaerk No creo que lo haga. La página man dice esto: "Si no se proporciona ninguna codificación, el valor predeterminado se deriva de la codificación de caracteres de la configuración regional actual". Así que creo que el comentario de HighKing sobre no proporcionar la codificación del archivo original es incorrecto. –

+0

La utilidad de archivos no siempre adivina la codificación correcta. Debe juzgar manualmente el contenido si es comprensible abriendo el archivo con una codificación diferente. – code4j

16

He encontrado que esto funcione para mí:

iconv -f ISO-8859-14 Agreement.txt -t UTF-8 -o agreement.txt 
+1

mientras se hace '' file myfile.txt'', da '' ISO-8859''. Por lo tanto, he intentado con los suyos (excepto '' -14''). Muestra que '' ISO-8859 no es compatible''. Y finalmente acabo de agregar '' -14'' junto con '' ISO-8859-14'' y funcionó .. – Spike

+1

Lo he visto por lo general ISO-8859-1 –

2

en mi caso, el comando file indica una codificación incorrecta, así que intenté convertir todas las codificaciones posibles y encontré la correcta.

ejecute este script y verifique el archivo de resultados.

for i in `iconv -l` 
do 
    echo $i 
    iconv -f $i -t UTF-8 yourfile | grep "hint to tell converted success or not" 
done &>/tmp/converted 
0

Puede utilizar la codificación ISO-8859-9:

iconv -f ISO-8859-9 Agreement.txt -t UTF-8 -o agreement.txt 
6

tengo ubuntu 14 y las otras respuestas donde no hay trabajo para mí

iconv -f ISO-8859-1 -t UTF-8 in.tex > out.tex 

me encontré con este comando here

0

Iconv simplemente escribe el texto convertido en stdout. Debe usar -o OUTPUTFILE.txt como parámetro o escribir stdout en un archivo. (iconv -f x -t z filename.txt > OUTPUTFILE.txtoiconv -f x -t z <filename.txt> OUTPUTFILE.txt en algunas versiones de iconv)

Synopsis 

iconv -f encoding -t encoding inputfile 

Description 

The iconv program converts the encoding of characters in inputfile from one coded character set to another. 
**The result is written to standard output unless otherwise specified by the --output option.** 

--from-code, -f encoding 

Convert characters from encoding 

--to-code, -t encoding 

Convert characters to encoding 

--list 

List known coded character sets 

--output, -o file 

Specify output file (instead of stdout) 

--verbose 

Print progress information. 
Cuestiones relacionadas