25 de julio de 2014

Notepad++ y la codificación de archivos de texto

Números binarios en verde

Cuando nosotros escribimos texto la computadora lo guarda en formato de número. Para que las computadoras de distintos fabricante pudieran compartir datos entre sí se creó el Código Americano (de Estados Unidos) para el Intercambio de Información (ASCII, por sus siglas en inglés; hay quien lo pronuncia /askí/). Estaba compuesto por 128 números y se terminó en 1967. Algunos representaban letras y otros, comandos. Estos últimos ya no se usan.



El ASCII original


Símbolo Descripción
0 NULL (carácter nulo)
1 SOH (inicio encabezado)
2 STX (inicio texto)
3 ETX (fin de texto)
4 EOT (fin transmisión)
5 ENQ (enquiry)
6 ACK (acknowledgement)
7 BEL (timbre)
8 BS (back space o retroceso)
9 HT (tabulador horizontal)
10 LF (salto de linea)
11 VT (tabulador vertical)
12 FF (form feed)
13 CR (retorno de carro)
14 SO (shift Out)
15 SI (shift In)
16 DLE (data link escape)
17 DC1 (device control 1)
18 DC2 (device control 2)
19 DC3 (device control 3)
20 DC4 (device control 4)
21 NAK (negative acknowledgement)
22 SYN (synchronous idle)
23 ETB (end of trans. block)
24 CAN (cancel)
25 EM (end of medium)
26 SUB (substitute)
27 ESC (escape)
28 FS (file separator)
29 GS (group separator)
30 RS (record separator)
31 US (unit separator)
32 (espacio en blanco)
33 ! (signo de admiracion)
34 " (comillas dobles)
35 # (numeral)
36 $ (signo pesos)
37 % (por ciento)
38 & (anpersand)
39 ' (comilla simple)
40 ( (abre parentesis)
41 ) (cierra parentesis)
42 * (asterisco)
43 + (signo mas)
44 , (coma)
45 - (signo menos)
46 . (punto)
47 / (barra inclinada)
48 0 (cero)
49 1 (uno)
50 2 (dos)
51 3 (tres)
52 4 (cuatro)
53 5 (cinco)
54 6 (seis)
55 7 (siete)
56 8 (ocho)
57 9 (nueve)
58 : (dos puntos)
59 ; (punto y coma)
60 < (mayor que )
61 = (igual que)
62 > (menos que)
63 ? (cierra signo interrogacion)
64 @ arroba
65 A (letra A mayuscula)
66 B (letra B mayuscula)
67 C (letra C mayuscula)
68 D (letra D mayuscula)
69 E (letra E mayuscula)
70 F (letra F mayuscula)
71 G (letra G mayuscula)
72 H (letra H mayuscula)
73 I (letra I mayuscula)
74 J (letra J mayuscula)
75 K (letra K mayuscula)
76 L (letra L mayuscula)
77 M (letra M mayuscula)
78 N (letra N mayuscula)
79 O (letra O mayuscula)
80 P (letra P mayuscula)
81 Q (letra Q mayuscula)
82 R (letra R mayuscula)
83 S (letra S mayuscula)
84 T (letra T mayuscula)
85 U (letra U mayuscula)
86 V (letra V mayuscula)
87 W (letra W mayuscula)
88 X (letra X mayuscula)
89 Y (letra Y mayuscula)
90 Z (letra Z mayuscula)
91 [ (abre corchetes)
92 \ (barra invertida)
93 ] (cierra corchetes)
94 ^ (circunflejo)
95 _ (guion bajo)
96 ` (acento grave)
97 a (letra a minúscula)
98 b (letra b minúscula)
99 c (letra c minúscula)
100 d (letra d minúscula)
101 e (letra e minúscula)
102 f (letra f minúscula)
103 g (letra g minúscula)
104 h (letra h minúscula)
105 i (letra i minúscula)
106 j (letra j minúscula)
107 k (letra k minúscula)
108 l (letra l minúscula)
109 m (letra m minúscula)
110 n (letra n minúscula)
111 o (letra o minúscula)
112 p (letra p minúscula)
113 q (letra q minúscula)
114 r (letra r minúscula)
115 s (letra s minúscula)
116 t (letra t minúscula)
117 u (letra u minúscula)
118 v (letra v minúscula)
119 w (letra w minúscula)
120 x (letra x minúscula)
121 y (letra y minúscula)
122 z (letra z minúscula)
123 { (abre llaves)
124 | (barra vertical)
125 } (cierra llaves)
126 ~ (tilde)
127 DEL (borrar o delete)
(Gracias a http://www.elcodigoascii.com.ar/ por las tablas).

Si analizamos detalladamente la tabla vamos a notar un problema: solo tiene letras del alfabeto inglés. Es imposible escribir una vocal acentuada, una Ñ o una letra de otro alfabeto como la Ç. Esto se debió a que el código fue pensado en Estados Unidos en una época en que la computación no estaba muy desarrollada fuera de ese país.

ASCII extendido


IBM amplió el código ASCII original añadiendo letras propias de otros idiomas, como el español, y símbolos gráficos como ╣ o ▓ . Así nació el ASCII extendido:

Símbolo Descripción
128 Ç (C cedilla mayúscula)
129 ü ("u" minúscula con diéresis)
130 é ("e" minúscula con acento agudo)
131 â ("a" minúscula con acento circunflejo)
132 ä ("a" minúscula con dieresis)
133 à ("a" minúscula con acento grave)
134 å ("a" minúscula con anillo)
135 ç (c cedilla minúscula)
136 ê ("e" minúscula con acento circunflejo)
137 ë ("e" minúscula con dieresis)
138 è ("e" minúscula con acento grave)
139 ï ("i" minúscula con dieresis)
140 î ("i" minúscula con acento circunflejo)
141 ì ("i" minúscula con acento grave)
142 Ä ("A" mayuscula con dieresis)
143 Å ("a" mayuscula con anillo)
144 É (letra "e" mayuscula con acento agudo)
145 æ ("ae" latina minúscula)
146 Æ ("AE" latina mayuscula)
147 ô ("o" minúscula con acento circunflejo)
148 ö ("o" minúscula con dieresis)
149 ò ("o" minúscula con acento grave)
150 û ("u" minúscula con acento circunflejo)
151 ù ("u" minúscula con acento grave)
152 ÿ ("y" minúscula con dieresis)
153 Ö ("O" mayuscula con dieresis)
154 Ü ("U" mayuscula con dieresis)
155 ø ("o" minúscula con barra)
156 £ (signo de libra esterlina)
157 Ø ("O" mayuscula con barra)
158 × (signo de multiplicación)
159 ƒ (símbolo matemático de funcion )
160 á (letra "a" minúscula con acento)
161 í (letra "i" minúscula con acento agudo)
162 ó (letra "o" minúscula con acento)
163 ú (letra "u" minúscula con acento)
164 ñ (letra ñ minúscula)
165 Ñ (letra Ñ mayúscula)
166 ª (ordinal femenino)
167 º (ordinal masculino)
168 ¿ (signo de interrogación de apertura)
169 ® (signo de marca registrada)
170 ¬ (signo de negación)
171 ½ (un medio)
172 ¼ (un cuarto)
173 ¡ (signo de exclamación de apertura)
174 « (comillas francesas de apertura)
175 » (comillas francesas de cierre)
176 ¦
177 ¦
178 ¦
179 ¦
180 ¦
181 Á (letra "a" mayuscula con acento agudo)
182 Â ("A" mayuscula con acento circunflejo)
183 À ("A" mayuscula con acento grave)
184 © (signo de copyright)
185 ¦
186 ¦
187 +
188 +
189 ¢ (signo centavo)
190 ¥ (signo YEN - YUAN)
191 +
192 +
193 -
194 -
195 +
196 -
197 +
198 ã ("A" minúscula con tilde)
199 Ã ("A" mayuscula con tilde)
200 +
201 +
202 -
203 -
204 ¦
205 -
206 +
207 ¤ (signo monetario)
208 ð (eth latina minúscula)
209 Ð (eth latina mayúscula)
210 Ê ("E" mayuscula con acento circunflejo)
211 Ë ("E" mayuscula con dieresis)
212 È ("E" mayuscula con acento grave)
213 i
214 Í ("i" mayuscula con acento agudo)
215 Î ("i" mayuscula con acento circunflejo)
216 Ï ("i" mayuscula con dieresis)
217 +
218 +
219 ¦
220 _
221 ¦ (barra vertical partida)
222 Ì ("i" mayuscula con acento grave)
223 ¯
224 Ó ("O" mayúscula con acento agudo)
225 ß (letra alemana "eszett" o "ese-zeta")
226 Ô ("O" mayuscula con acento circunflejo)
227 Ò ("O" mayuscula con acento grave)
228 õ ("o" minúscula con tilde)
229 Õ ("O" mayuscula con tilde)
230 µ (signo micro)
231 þ (letra thorn latina minúscula)
232 Þ (letra thorn latina mayuscula)
233 Ú (letra "u" mayuscula con acento)
234 Û ("U" mayuscula con acento circunflejo)
235 Ù ("U" mayuscula con acento grave)
236 ý (letra "y" minúscula con acento agudo)
237 Ý ("Y" mayúscula con acento agudo)
238 ¯
239 ´ (acento agudo)
240 ­
241 ± (signo mas menos)
242 =
243 ¾ (tres cuartos)
244 (fin de parrafo - signo de calderón)
245 § (signo de seccion)
246 ÷ (signo de division)
247 ¸ (cedilla)
248 ° (signo de grado)
249 ¨ (diéresis)
250 ·
251 ¹ (superíndice uno)
252 ³ (superíndice tres)
253 ² (superíndice dos)
254 ¦
255 nbsp espacio sin separación

Unicode


Más tarde surgió el estándar Unicode y se renombró a UTF-8. Pero seguía habiendo muchos caracteres imposibles de escribir, como los del alfabeto árabe o el chino. Para eso surgió lo que se conoce como UTF-16 con miles de opciones disponibles. Estos códigos son gestionados y actualizados por el Unicode Consortium.

Manejando la codificación con Notepad++


Cuando abrimos un archivo con Notepad++ este determina automáticamente la codificación. Normalmente lo hace bien, pero por las dudas podemos indicarla manualmente. Para esto desplegamos el menú “Codificación”. Tenemos varias opciones:

Menú "Codificación" en Notepad++

  • ANSI”: Es otro nombre para ASCII. Cada vez es menos usada.
  • UTF-8 sin BOM” y “UTF-8″: aquí podemos elegir el estándar UTF-8. El BOM es un carácter que se añade al principio de los archivos de texto UTF-16 y que a veces aparece en los que usan UTF-8, pero es innecesario. Si elegimos UTF-8 sin BOM y vemos un espacio al inicio que no debería estar debemos cambiar a la otra opción.
  • UCS-2 Big Endian” y “UCS-2 Little Endian”: son dos versiones de UTF-16. Ambas usan exactamente la misma codificación pero varia el orden en que se almacenan los valores internamente. Los documentos codificados en UTF-16 incluyen al principio un carácter, el BOM del que ya hablamos y que no se muestra en el texto, que identifica correctamente el orden.

Si nuestro documento no se visualiza bien podemos probar las distintas opciones hasta encontrar la correcta. Aquí un ejemplo de un documento abierto con una codificación errónea:

Documento mal codificado

Podemos ver que los principales conflictos ocurren con las letras acentuadas que no existen en inglés. Aquí el mismo documento con la codificación correcta:

Documento bien codificado

Convirtiendo


Debajo de esas opciones, en el mismo menú “Codificación”, tenemos otra vez las mismas opciones pero ahora empiezan con “Convertir a” en lugar de “Codificar en”. Con estas opciones podemos cambiar la codificación de un documento de forma automática.

Es muy simple. Abrimos el archivo, nos aseguramos de que la codificación sea correcta, desplegamos el menú y elegimos la opción deseada.

¿Cuál es la mejor? No hay que elegir ANSI porque ya está obsoleta. Lo ideal es usar UTF-8 sin BOM salvo que utilicemos algún alfabeto que requiera UTF-16 como los asiáticos. En cuanto a elegir Big o Little Endian debería ser lo mismo porque el carácter BOM se encarga de identificar correctamente al archivo.

Fuente | Jeff Golden -Flickr.

No hay comentarios.: