Classe :: DBI :: UTF8

uma classe ::: dbi subclasse que sabe sobre UTF-8
Baixe Agora

Classe :: DBI :: UTF8 Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • Perl Artistic License
  • Preço:
  • FREE
  • Nome do editor:
  • Fotango Ltd
  • Site do editor:
  • http://search.cpan.org/~fotango/

Classe :: DBI :: UTF8 Tag


Classe :: DBI :: UTF8 Descrição

Uma classe ::: DBI subclasse que sabe sobre UTF-8 Em vez de ter que pensar em coisas como conjuntos de personagens, prefiro que meus objetos façam apenas a coisa certa. Eu também quero seqüências de bytes codificadas UTF-8 no banco de dados sempre que possível. Usando esta subclasse de classe :: DBI, eu posso apenas colocar strings perl nas propriedades de um objeto, e a coisa certa sempre irá para o banco de dados e sair novamente.Para exemplo, sem classe :: dbi :: utf8, myobject -> Criar ({id => 1, text => "\ x {2264}"}); # Um símbolo menos ou igual ao símbolo..will criar uma linha no banco de dados contendo (provavelmente) a codificação de byte UTF-8 do símbolo menor que ou igual ao símbolo. Mas ao tentar recuperar o objeto novamente .. Meu $ quebrado = myobject-> recuperar (1); Meu texto $ Text = $ Broken-> Texto; ... $ Texto Will (provavelmente) conter 3 caracteres e não parecerá nada como um símbolo menor que ou igual ao. Da mesma forma, você não poderá pesquisar corretamente por cadeias de caracteres que contenham caracteres não ASCII.Criando objetos com caracteres não-ASCII mais simples do intervalo Latin-1 levará a comportamentos ainda mais estranhos: meu $ EACUTE = "\ X {E9}"; # um e-agudo myobject-> criar ({text => $ e_acute}); UTF8 :: Upgrade ($ EACUTE); # Ainda a mesma letra, mas com uma representação interna diferente myObject-> Create ({text => $ e_acute}); isso criará duas linhas no banco de dados - a primeira contendo os bytes codificados latin-1 de um e-agudo O caractere (ou o banco de dados pode recusar-se a criar a linha, se tiver sido configurado para exigir UTF-8), este último contendo os bytes codificados UTF-8 de um e-agudo. Neste último caso, você não terá um e-agudo de novo se você recuperar a linha; Você terá uma string contendo dois caracteres, um para cada byte da codificação UTF-8.Porque disso, se você está lidando de dados de uma fonte externa, você realmente não terá nenhuma ideia clara do que será indo no banco de dados em all.felizmente, simplesmente adicionando as linhas: Use Classe :: DBI :: UTF8; __Package __-> UTF8_Columns ("Texto"); fará todas essas operações funcionarem muito mais conforme o esperado - o banco de dados sempre conterá o UTF-8 bytes, você sempre receberá os personagens que você colocará, e você se tornará instantaneamente o mais popular Pessoa no Work.classe :: DBI :: UTF8 é um módulo Perl que assume que o banco de dados e o driver subjacente não sabe nada sobre conjuntos de caracteres e apenas armazenar bytes. Alguns bancos de dados, por exemplo, versões postgresql e posterior do MySQL, permitem criar tabelas com conjuntos de caracteres UTF-8, mas os drivers Perl DB não respeitam isso e ainda exigem que você passe UTF-8 bytes e retorne UTF-8 Bytes e, portanto, precisam de manuseio especial com classe :: dbi.classe :: dbi :: utf8 fará a coisa certa em ambos os casos, e eu sugiro que você diga ao banco de dados para usar a codificação UTF-8, bem como usando a classe :: DBI :: UTF8, onde possível. Módulo SynopsIStis é um plugin de classe :: DBI: pacote foo; Use a base QW (Classe :: DBI); Use Classe :: DBI :: UTF8; ... __package __-> Colunas (all => qw (texto de identificação outro)); # A coluna de texto contém dados de caracteres codificados UTF8 __package __-> utf8_columns (QW (TEXT)); ... # Crie um objeto com um personagem desagradável. meu $ foo = foo-> criar ({text => "a \ x {2264} b para alguns",}); # busca por chars utf8. Foo-> Pesquisa (Text => "A \ x {2264} B para alguns"); Requisitos: · Perl.


Classe :: DBI :: UTF8 Software Relacionado