33 votos

De ANSI a UTF-8 en Notepad++

Tengo un texto codificado en ANSI:

Archivo de texto ANSI

Cuando intento convertirlo a UTF-8 (usando el menú de Notepad++ Codificación > UTF-8), obtengo algunos caracteres extraños:

Archivo de texto UTF-8

Pensé que UTF-8 era un superconjunto de ANSI y que no tendría este tipo de problemas. ¿Hay alguna forma de evitar la aparición de esos caracteres extraños?

0 votos

No veo qué hay de extraño en la última imagen

0 votos

Me refiero a los caracteres no visibles. ¿Hay alguna forma de evitar esto?

0 votos

¿Editaste la pregunta? Creo que veo las imágenes al revés

51voto

WFBD Puntos 11

TL;DR

Seleccione Convertir a UTF-8 en lugar de Codificar en UTF-8


UTF-8 no es un conjunto de caracteres, solo una codificación para Unicode. Los primeros 128 valores de bytes son iguales que ASCII (y la mayoría de los demás conjuntos de caracteres cuerdos). Sin embargo, los bytes con el bit alto establecido (o ⩾ 0x80) son caracteres extendidos en ASCII mientras que en UTF-8 indican una secuencia de múltiples bytes.

Ese es el caso de 0x93 o 0x94 arriba. Si abre el archivo en ANSI, utilizará la página de códigos de Windows actual que a menudo es Windows-1252 por defecto en EE. UU. y la mayoría de los países de Europa occidental. En Windows-1252, esos bytes son “comillas inteligentes” (o comillas curvadas con formas de apertura y cierre diferentes) que a menudo se ven al usar un editor de texto enriquecido como MS Word. Sin embargo, si selecciona Codificación > Codificar en UTF-8 entonces el archivo se tratará como si hubiera sido codificado en UTF-8. Los elementos de menú Codificar en... se utilizan para decirle a Notepad++ la codificación real si tiene caracteres incorrectos siendo mostrados1. Dado que 0x93 y 0x94 solos son secuencias de múltiples bytes UTF-8 mal formadas, se dejan tal cual en el editor

Eso significa que no hay nada extraño en el archivo. Simplemente ha elegido la herramienta incorrecta. Necesita hacer clic en Convertir a UTF-8 para transformar toda la secuencia de bytes de entrada a la codificación seleccionada

codificación de notepad


También tiene un poco de confusión sobre ANSI y ASCII. ANSI no es un conjunto de caracteres definido y puede significar cualquier página de códigos, aunque a menudo se refiere a Windows-1252. Windows-1252 es un superconjunto de ISO-8859-1 (también conocido como Latin-1) y ISO-8859-1 es los primeros 256 puntos de código de Unicode. ASCII es un conjunto de caracteres de 7 bits y es un subconjunto de casi todos los conjuntos de códigos ANSI codificados en 8 bits o más. A veces también se le llama ANSI, aunque no es muy correcto

En general, la relación entre los principales conjuntos de caracteres es la siguiente

ASCII < ISO-8859-1 < Windows-1252
        ^
        Unicode

1 Ese hecho desafortunado sucede porque no hay información de codificación incrustada en los archivos de texto y tenemos que adivinar, pero es imposible adivinar correctamente cada vez y surgen problemas, como el famoso error Bush hid the facts. Ver

Por razones históricas, Windows maneja tanto los archivos de texto ANSI como los de Unicode al mismo tiempo. Por lo tanto, para diferenciarlos debe usar el marcador de orden de bytes como una especie de firma para indicar que es un archivo de texto con una codificación específica. A pesar del nombre, en realidad no es para marcar "orden de bytes" como siempre afirman los usuarios de Unix, sino puramente una firma. Tener una firma es en realidad algo bueno y todos los formatos de archivo binarios adecuados lo hacen. Sin una firma BOM la codificación es ANSI, de lo contrario es Unicode. Dado que los sistemas Unix siempre usan UTF-8 hoy en día y realmente no tienen que trabajar con multitud de codificaciones de texto, a menudo no hay problemas como en Windows

0 votos

Gracias, lamento haber causado problemas con el juego de caracteres con la codificación. ¿Hay alguna manera de evitar tener esos caracteres no visibles y tener en su lugar algunas comillas visibles?

0 votos

@user3658425 por favor, revisa mi edición

0 votos

Gracias, eso resuelve mi problema. No tengo ni idea de por qué, pero pensé que 'codificar' en el menú significaba que se convertiría :)

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X