BBDD
La elección del Juego de Caracteres de la BBDD es una cuestión funcional y debe responder a la pregunta:
¿Qué lenguages queremos soportar en la BBDD? o bien; ¿Los caracteres de que lenguages debemos poder guardar en la BBDD? ¿Vamos a utilizar Java para acceder a la Base de Datos?
Vamos a ver las posibilidades prácticas para los paises de nuestro entorno:
US7ASCII
- En general, es una mala elección debido a que solo soporta el Inglés.
WE8ISO8859P1
- Esta Juego de Caracteres ha sido utilizado durante mucho tiempo.
- No obstante, no incluye el carácter €.
Si pensamos en este Juego de Caracteres, es mejor el WE8ISO8859P15 que incluye el carácter €.
WE8ISO8859P15
- Es bastante completo e incluye el carácter €.
- Además, está soportado por el comité ISO.
- Es el ideal si queremos hacer aplicaciones que lo utilicen (p.e.: páginas Web con este Juego de Caracteres).
No obstante, si deseamos hacer aplicaciones con solo las lenguas del Oeste de Europa, debe considerarse tanbién el Juego de Caracteres de Windows WE8WIN1252.
Hay que tener en cuenta que los Juegos de Carácteres WE8ISO8859P15 y WE8WIN1252 son incompatibles:
- El Carácter € está codificado con distinto código
- WE8WIN1252 incluye carácteres adicionales. Básicamente son comillas tipográficas (comillas simple/dobles abiertas y cerradas, etc)
- Concretamente, el Juego de Caracteres WE8WIN1252 incluye el carácter ' (acento cerrado + espacio) que, generalmente, se utiliza en lugar del apóstrofo ' (carácter situado a la derecha del 0 en el teclado español).
- Ambos caracteres son distintos.
- Si utilizamos el Juego de Caracteres WE8ISO8859P15, el caracter (acento cerrado + espacio) se va a representar como un '?' debido a que no existe en este Juego de Caracteres.
Por estos motivos, y por regla general, quizás el Juego de Caracteres WE8WIN1252 sea el ideal si solo queremos representar los idiomas de Europa Occidental.
WE8MSWIN1252
Aunque no sea un Juego de Caracteres ISO, si pensamos en la práctica, quizás sea el mejor Juego de Caracteres para representar, exclusivamente, los lenguages de Europa Occidental.
Unicode
Si necesitamos poder representar cualquier lenguage, la única solución es utilizar algún Juego de Caracteres basado en Unicode.
No obstante, en Unicode, cada carácter puede ocupar más de un byte y, en consecuencia, el tamaño de la BBDD se puede disparar. Además, se debe recordar el límite de 4000 bytes para un campo de tipo CHAR/VARCHAR2 que puede implicar menos carácteres.
Podemos dar unas indicaciones:
- Si casi todo el texto utiliza el alfabeto inglés:
- Una buena opción es UTF8 debido a que las letras del alfabeto inglés se codifican con 1 byte.
- Si casi todo el texto corresponde a lenguas que no son de Europa Occidental:
- La utilización de AL32UTF8 puede ser una buena opción. No obstante cada caracter puede ocupar hasta 4 bytes.
- Otra opción puede ser la utilización de campos National (NCHAR, NVARCHAR2, NCLOB) para estos campos ya que estarán codificados en AL16UTF16 y la mayoría de los caracteres ocuparańa 2 bytes.
Como puede verse, en este caso no es trivial el Juego de Caracteres a utilizar.
