Clase :: DBI :: UTF8

A Clase ::: Subclase DBI que sabe acerca de UTF-8
Descargar ahora

Clase :: DBI :: UTF8 Clasificación y resumen

Anuncio publicitario

  • Rating:
  • Licencia:
  • Perl Artistic License
  • Precio:
  • FREE
  • Nombre del editor:
  • Fotango Ltd
  • Sitio web del editor:
  • http://search.cpan.org/~fotango/

Clase :: DBI :: UTF8 Etiquetas


Clase :: DBI :: UTF8 Descripción

Una clase ::: DBI Subclase que sabe acerca de UTF-8 En lugar de tener que pensar en cosas como conjuntos de personajes, prefiero que mis objetos simplemente hagan lo correcto. También quiero las cadenas de bytes codificadas UTF-8 en la base de datos siempre que sea posible. Utilizando esta subclase de clase :: DBI, solo puedo poner las cadenas Perl en las propiedades de un objeto, y lo correcto siempre entrará en la base de datos y saldrán nuevamente. Por ejemplo, sin clase :: DBI :: UTF8, MYOBJECT -> Crear ({id => 1, texto => "\ x {2264}"}); # a menos de símbolo que o igual a un símbolo. Creará una fila en la base de datos que contenga (probablemente) la codificación UTF-8 byte del símbolo menor que o igual a. Pero al intentar recuperar el objeto de nuevo ... My $ ROKE = MYOBJECT-> recuperar (1); My $ Text = $ Broken-> Texto; ... $ Texto (probablemente) contenga 3 caracteres y no parecerá nada como un símbolo menos o igual a. Del mismo modo, no podrá buscar correctamente para las cadenas que contengan caracteres no ASCII. Los objetos de creación con caracteres no ASCII más simples de la gama Latin-1 conducirán a comportamientos aún extraños: My $ E_ACITUT = "\ x {E9}"; # un e-agudo myObject-> Crear ({text => $ e_acute}); utf8 :: actualización ($ e_acute); # sigue siendo la misma letra, pero con una representación interna diferente myObject-> Create ({text => $ e_acute}); Esto creará dos filas en la base de datos, la primera que contiene los bytes codificados latino-1 de un e-agudo El carácter (o la base de datos puede negarse a permitirle crear la fila, si se ha configurado para requerir UTF-8), este último que contiene los bytes codificados UTF-8 de un e-agudo. En este último caso, no volverá a obtener un e-agudo si recupera la fila; Obtendrá una cadena que contenga dos caracteres, una para cada byte de la codificación UTF-8. Porque, si está manejando datos de una fuente externa, realmente no tendrá ninguna idea clara de lo que va a ir en la base de datos en absoluto. Enfortunadamente, simplemente agregue las líneas: Use Class :: DBI :: UTF8; __Package __-> UTF8_Columns ("Texto"); Hará que todas estas operaciones funcionen mucho más como se esperaba, la base de datos siempre contendrá los bytes UTF-8, siempre recuperará los caracteres que ingresó, y se convertirá al instante el más popular. Persona en Work.Class :: DBI :: UTF8 es un módulo PERL que supone que la base de datos subyacente y el controlador no saben nada sobre los conjuntos de caracteres, y solo almacenar bytes. Algunas bases de datos, por ejemplo, PostgreSQL y versiones posteriores de MySQL, le permiten crear tablas con conjuntos de caracteres UTF-8, pero los controladores PERL DB no respetan esto y aún requieren que pase el UTF-8 bytes y devuelva UTF-8 Bytes y, por lo tanto, todavía necesita un manejo especial con clase :: DBI.Class :: DBI :: UTF8 hará lo correcto en ambos casos, y le sugerirá que indique que la base de datos use la codificación UTF-8, así como el uso de Clase :: DBI :: UTF8 donde sea posible.Synopsisthis Module es una clase :: Plugin DBI: Paquete FOO; Use Base QW (Clase :: DBI); Uso Class :: DBI :: UTF8; ... __package __-> Columnas (todos => qw (Otro texto de ID)); # La columna de texto contiene datos de caracteres codificados UTF8 __Paquetes __-> UTF8_Columns (QW (texto)); ... # Crear un objeto con un carácter desagradable. My $ foo = foo-> cree ({text => "A \ x {2264} B para algunos A",}); # Buscar los caracteres UTF8. Foo-> búsqueda (texto => "A \ x {2264} B para algunos A"); Requisitos: · Perl


Clase :: DBI :: UTF8 Software relacionado