Jump to content


Photo

El UTF8 en la cadena de conexión de un FbConnection


  • Please log in to reply
3 replies to this topic

#1 markdelphi

markdelphi

    Advanced Member

  • Moderadores
  • PipPipPip
  • 97 posts
  • LocationMéxico

Posted 22 September 2009 - 06:56 PM

Trabajando en un módulo del curso de Programación de Delphi Prism con ADO.NET y Firebird me tope con el eterno problema de no ver los caracteres de nuestra aplicación de la manera correcta (tildes, acentos, eñes) esto es algo que suele irritar a más de uno cuando se inicia en este desgraciado medio. Me la pase un buen rato tratando de hacer que se mostraran los acentos en los resultados de una consulta SQL. Pues bien, al final me di cuenta que para empezar no estaba usando el DEFAULT CHARACTER SET correcto al momento de crear mi base de datos en Firebird, yo estaba usando WIN1251 el cuál no es el juego correcto de caracteres para nuestro idioma, al final me di cuenta que para que mi aplicación mostrará bien los acentos tenía que usar el juego de caracteres UTF-8, pero ¿Qué es y para qué sirve me pregunte? Comencé investigando que es Unicode.

Probablemente muchos de ustedes hayan oído hablar de los sistemas de codificación, los que hablamos español estamos muy acostumbrado al famoso ASCII si, ese que nos ayuda a sacar las tildes.
Pues así como el ASCII hay muchísimos sistemas de codificación que lo usan en otros idiomas e incluso un mismo idioma puede tener varios sistemas de codificación que varía por la plataforma en la que se ejecuta. ¿Y cómo hacemos para arreglar todo este enredo? como hago para poder ver páginas de anime japonés con sus caracteres reales y no solamente unos cuadrados? como hacen los hebreos para poder leer correctamente algo en francés o ruso? La respuesta a todo es Unicode!

Unicode proporciona un número único para cada carácter, sin importar la plataforma, sin importar el programa, sin importar el idioma.

Dicho todo esto, volvamos con UTF-8 !

UTF-8 se lo debemos al maestro Ken_Thompson, si uno de los genios detrás de Unix y el creador de Plan 9

UTF-8 usa grupos de bytes para representar el estándar de Unicode para los alfabetos de muchos de los lenguajes del mundo. Es especialmente útil para la transmisión sobre sistemas de correo de 8 bits.
Usa de 1 a 4 bytes por carácter, dependiendo del símbolo de Unicode. Por ejemplo, se necesita un solo byte en UTF-8 para codificar los 128 caracteres US-ASCII en el rango U+0000 a U+007F de Unicode.

Para todos aquellos que tenemos necesidad de programar usar UTF-8 nos ha servido para aliviar muchísimos dolores de cabeza, especialmente para los que hablamos español y tenemos necesidad de colocar tildes y algunos caracteres especiales, y muchas veces teníamos que hacerlo con software que no contemplaban esas posibilidades. Ahora casi todo el software que usamos y que tiene que ver con manipulación de documentos soportan este formato.
Para los que son webmasters UTF-8 es especialmente importante porque les ahorrará muchos problemas con los navegadores, webservers y las aplicaciones que escriban.

Pues bien, configure el DEFAULT CHARACTER SET de  mi base de datos Firebird a UTF-8 y por supuesto algo muy importante: Al momento de crear la cadena de conexión para conectarnos a Firebird no debemos olvidar especificar el character set = UTF8, de esta manera la aplicación ahora si mostrará de forma correcta los tildes, acentos y eñes.

La cadena de conexión quedaría más o menos así:



delphi
  1. var cnn : FbConnection := new FbConnection('character set=UTF8;data source=laptop;initial catalog="C:\GESTIONCOMERCIAL.FDB";user id=SYSDBA;password=masterkey');



Después de un buen rato de invetigar al final quedo.  :smiley:

  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14460 posts
  • LocationMéxico

Posted 22 September 2009 - 07:12 PM

Ah que bien amigo Marco, fijate que en mis bases de datos que genero firebird, acostumbro (no se porque , pero creo que lo leí en algún hilo de Club Delphi) a usar el Charset ISO8859_1, haré las pruebas con el UTF-8 a ver que tal.

Gracias por el dato, muy bueno (y)

Salud OS

PD, preguntale a enecumene que lata hemos tenido con ese famoso UTF-8 aquí en el foro :p
  • 0

#3 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 23 September 2009 - 06:41 AM

PD, preguntale a enecumene que lata hemos tenido con ese famoso UTF-8 aquí en el foro :p


Ni que lo digas hombre :s :s
  • 0

#4 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2137 posts

Posted 23 September 2009 - 07:11 AM

Excelente aporte .  Gracias maestro.
  • 0




IP.Board spam blocked by CleanTalk.