Tengo un archivo txt:
$ file -i x.txt
x.txt: text/plain; charset=unknown-8bit
$ file x.txt
x.txt: Non-ISO extended-ASCII text, with CRLF line terminators
Y hay algunos caracteres que están codificados incorrectamente:
trwa³y, sta³y, usuwaæ
¿Cómo puedo cambiar la codificación de este archivo a UTF-8? He intentado lo siguiente hasta ahora:
$ iconv -f ASCII -t UTF-8 x.txt
puiconv: illegal input sequence at position 4
Tal vez debería usar de alguna manera extended ASCII
( high ASCII
) pero no puedo encontrarlo en iconv
la lista de codificación.
character-encoding
text
Patryk
fuente
fuente
iconv -f windows-1252 -t utf-8 file
Respuestas:
file
le dice "Texto ASCII extendido no ISO" porque detecta que esto es:Debe averiguar en qué codificación parece estar este archivo. Puede probar el reconocimiento automático de Enca . Es posible que deba empujarlo en la dirección correcta diciéndole en qué idioma está el texto.
Para convertir el archivo, pase el
-x
opción:enca -L polish x.txt -x utf8 >x.utf8.txt
Si no puede o no quiere usar Enca, puede adivinar la codificación manualmente. Un poco de mirar a mi alrededor me dijo que este es un texto polaco y que las palabras son trwały, stały, usuważ, por lo que estamos buscando una traducción donde
³
→ł
yæ
→ż
. Esto parece latino-2 o latino-10 o más probable (dado el CP1250 “no ISO” que está viendo como latino1 . Para convertir el archivo a UTF-8, puede usar recode o iconv .fuente
< x.txt > x.utf8.txt
¿Por qué usamos<
y luego>
? ¿Como funciona?<
y>
realice la redirección de entrada y salida respectivamente .Abra el archivo de texto con gedit y en el cuadro de diálogo "Guardar como ..." verá la codificación actual.
fuente
¿Intentaste averiguar qué codificación exacta es x.txt? Obtendrá una lista de codificaciones compatibles con
A veces me sucede que tengo una falta de coincidencia entre latin1 y utf8. Luego, a menudo ayuda convertirlo y volverlo a utf8 y viceversa.
fuente
He creado un script de conversión automatizado usando el enca biblioteca , lo uso en mi NAS para convertir subtítulos a UTF-8, pero podría utilizarse para cualquier conversión automatizada
Siéntase libre de usar :)
EDITAR:
fuente