Portál AbcLinuxu, 12. května 2025 05:48

Dotaz: Jak vychytam v perlu rozbordelený kódování?

17.12.2012 10:31 jeleniste | skóre: 13 | blog: Prokustovo lože
Jak vychytam v perlu rozbordelený kódování?
Přečteno: 332×
Odpovědět | Admin
Jsem uplnej perlovej nováček a mam, nejspíš triviální, dotaz. Potřebuju nasypat texťáky do postgre. Texťáky soukam přes perl (i s tím, že ho neumím se mi to vyplatí). A narazil jsem na jeden problém. Do těch texťáků sahaly asi různý aplikace a je pomíchaný kódování. Je tam napsáno latin dva a je to směska cp852 a ISO-8859-2. cp převažuje, všechno teda překódovávám z cp852 do utf8 pomocí decode/encode. No, problém je, že ty znaky co nebyly v cp852 ten perl taky "překóduje" do utf a neskučí, chyba se objeví až při kopírování do postgre. Existuje způsob, jak to nějak vychytat? Např tak, aby se ty pomršený políčka zahodily a nahradily NULL (zrovna v těch neni nic důležitýho).

Dík Je;
Nejsem blbý, jen se hloupě ptám

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

17.12.2012 10:47 jeleniste | skóre: 13 | blog: Prokustovo lože
Rozbalit Rozbalit vše Re: Jak vychytam v perlu rozbordelený kódování?
Odpovědět | | Sbalit | Link | Blokovat | Admin
ha, tak jsem asi našel odpověď. Stačilo jen přijít na to, jak zformulovat otázku
Nejsem blbý, jen se hloupě ptám
17.12.2012 12:23 jeleniste | skóre: 13 | blog: Prokustovo lože
Rozbalit Rozbalit vše Re: Jak vychytam v perlu rozbordelený kódování?
Safra, ale to mě nefunguje.
Nejsem blbý, jen se hloupě ptám
17.12.2012 16:27 mike
Rozbalit Rozbalit vše Re: Jak vychytam v perlu rozbordelený kódování?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mas v tom trochu zmatek. Mejme tri kodovani C1,C2 a C3. C1 rika, ze 0x0='A' a 0x1='B'. C2 rika, ze 0x0='B' a 0x0='A'. C3 rika, ze 0x00 = 'A' a 0x11='B'. Potom text 0x00 je "AA" v C1, "BB" v C2, "A" v C3. Mejme pak kodery C1-C2, C2-C1, C1-C3, C2-C3:
C1-C2: 0x0->0x1, 0x1->0x0;
C2-C1: 0x0->0x1, 0x1->0x0;
C1-C3: 0x0->0x00, 0x1->0x11;
C2-C3: 0x0->0x11, 0x1->0x00;
a ted to muzes aplikovat na tvuj priklad. Neboli jak z textu 0x00 poznas o jake kodovani se jedna?
18.12.2012 08:05 jeleniste | skóre: 13 | blog: Prokustovo lože
Rozbalit Rozbalit vše Re: Jak vychytam v perlu rozbordelený kódování?
No, zmatek v tom mám. Nicméně, já bych i zkousnul, že se to udělá blbě, chci ale odstranit situace, kdy je tam kod, kterej v utf nic neni.. Páč mi pak vřeští postgre.
Nejsem blbý, jen se hloupě ptám
Řešení 1× (jeleniste (tazatel))
18.12.2012 09:43 mike
Rozbalit Rozbalit vše Re: Jak vychytam v perlu rozbordelený kódování?
  • Zkontroluj si, jake datove typy tech poli v postgresql mas?
  • Pokud to perl dela dobre, tak nikdy nemuzes dostat invalid UTF string po prekodovani do UTF z jineho kodovani
  • Invalid UTF-8 string muzes dostat bud pokud reknes, ze je to UTF-8 ale je v jinem kodovani, nebo je to v UTF-8 ale nektere znaky tomu neodpovidaji.
  • Je rozdil mezi UTF-8 a UTF-16
18.12.2012 09:59 jeleniste | skóre: 13 | blog: Prokustovo lože
Rozbalit Rozbalit vše Re: Jak vychytam v perlu rozbordelený kódování?
Aha, dík. Já už to dohledal v tom skriptuu, že sem to jedno pole nepřekódovával a tim mi vznikla chyba. Díky
Nejsem blbý, jen se hloupě ptám

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.