Klasse :: DBI :: UTF8

A Klasse ::: DBI-subklasse die weet over UTF-8
Download nu

Klasse :: DBI :: UTF8 Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • Perl Artistic License
  • Prijs:
  • FREE
  • Naam uitgever:
  • Fotango Ltd
  • Uitgever website:
  • http://search.cpan.org/~fotango/

Klasse :: DBI :: UTF8 Tags


Klasse :: DBI :: UTF8 Beschrijving

Een klasse ::: DBI-subklasse die weet over UTF-8 In plaats van te denken aan dingen zoals karaktersets, heb ik het liefst mijn objecten gewoon het juiste doen. Ik wil ook waar mogelijk UTF-8 gecodeerde byte-snaren in de database. Met behulp van deze subklasse van de klas: DBI, kan ik gewoon Perl-snaren in de eigenschappen van een object zetten, en het juiste ding zal altijd in de database gaan en weer uitkomen. Voorbeeld, zonder klas: DBI :: UTF8, MyObject :: Utf8, MyObject -> Maken ({ID => 1, tekst => "\ x {2264}"}); # Een minder dan-of-gelijk aan symbool..will Maak een rij in de database met (waarschijnlijk) de UTF-8 bytecodering van het minder-dan-of-gelijk aan symbool. Maar wanneer u probeert het object opnieuw op te halen .. Mijn $ gebroken = myObject-> ophalen (1); Mijn $ Text = $ Broken-> Tekst; ... $ Tekst zal (waarschijnlijk) 3 tekens bevatten en er niets uitzien als een minder dan-of-gelijk aan symbool. Evenzo kunt u niet goed zoeken voor snaren die niet-ASCII-tekens bevatten. Bewarende objecten met eenvoudiger niet-ASCII-tekens uit het Latin-1-bereik zal leiden tot zelfs vreemd gedrag: mijn $ e_acute = "\ x {e9}"; # Een e-acute myobject-> maken ({Text => $ e_acute}); UTF8 :: upgrade ($ e_acute); # Nog steeds dezelfde letter, maar met een andere # interne vertegenwoordiging myObject-> maken ({Text => $ e_acute}); dit maakt twee rijen in de database - de eerste die de Latin-1 gecodeerde bytes van een e-acute bevat. Karakter (of de database kan weigeren om u de rij te laten maken, als het is ingesteld om UTF-8 te vereisen), die de UTF-8 gecodeerde bytes van een e-acuut bevat. In het laatste geval krijgt u geen e-acuut weer terug als u de rij opneemt; U krijgt een tekenreeks met twee tekens, één voor elke byte van de UTF-8-codering. Omdat u gegevens van een buitenbron afhandelt, heeft u geen duidelijk idee van wat zal gaan In de database in de database. Eenvoudig, eenvoudig toevoegen van de regels: gebruik klasse :: DBI :: UTF8; __Package __-> UTF8_Columns ("Tekst"); zal al deze bewerkingen veel meer werken als verwacht - de database bevat altijd UTF-8 BYTES, u krijgt altijd de tekens die u binnenzet, en u wordt meteen het meest populair Persoon op het werk.klasse :: DBI :: UTF8 is een PERL-module die aanneemt dat de onderliggende database en het stuurprogramma niets weten over tekensets en gewoon bytes opslaan. Sommige databases, bijvoorbeeld PostgreSQL en latere versies van MySQL, kunt u tabellen maken met UTF-8-tekensets, maar de PERL DB-stuurprogramma's respecteren dit niet en vereisen u nog steeds om UTF-8 bytes door te geven, en retourneert u UTF-8 Bytes en daarom hebben nog steeds speciale afhandeling nodig met Klasse :: DBI.CLASS :: DBI :: UTF8 zal in beide gevallen het juiste doen, en ik zou u aanraden om de database te vertellen om UTF-8-codering te gebruiken en met behulp van Klasse :: DBI :: UTF8 waar mogelijk.Synopsistiummodule is een klasse :: DBI-plug-in: pakket foo; Gebruik basis qw (klasse :: dbi); Gebruik klasse :: DBI :: UTF8; ... __package __-> kolommen (ALL => QW (ID-tekst anders)); # De tekstkolom bevat UTF8-gecodeerde tekengegevens __package __-> UTF8_Columns (QW (tekst)); ... # Maak een object met een vervelende karakter. mijn $ foo = foo-> maken ({Text => "A \ x {2264} B voor een",}); # Zoeken naar UTF8 tekens. Foo-> zoeken (tekst => "A \ x {2264} B voor sommige A"); Vereisten: · Perl


Klasse :: DBI :: UTF8 Gerelateerde software