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
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
1 votos
Sí, lo siento, hice mi última edición justo después de que alguien agregó las imágenes, borrando así la adición: ¡si puedes volver a agregarlas, sería genial!
5 votos
Todo lo que aprendí sobre el tema, lo aprendí de "The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)" de Joel.
0 votos
@UweKeim: bastante malo, porque está desactualizado. Afirma que UTF-8 puede ocupar hasta seis bytes por punto de código, y recomienda UCS-2 (!?) en el lado del servidor (!?!?).