Perl: problém s diakritikou

Perl: problém s diakritikou
« kdy: 08. 03. 2011, 23:13:22 »
Zdravim, napisal som regexp, ktory by mal odchytit pismena ceskej abecedy. Problem je ale v tom, ze mi nezobere dlhe samohlasky, ale napriklad makke spoluhlasky zvlada v pohode. Dokonca aj v RxToolkite funguje ale v interpreteri nie. Interpretujem na Mac OS X, Snow Leopard 10.6.6. Neviete kde by mohol byt problem?

Kód: [Vybrat]
s/([\x{0041}-\x{005a}\x{0061}-\x{007a}\x{00c1}\x{00c9}\x{00cd}\x{00d3}\x{00da}\x{00dd}\x{00e1}\x{00e9}\x{00ed}\x{00f3}\x{00fa}\x{00fd}\x{016e}\x{016f}\x{010c}\x{010d}\x{010e}\x{010f}\x{011a}\x{011b}\x{0147}\x{0148}\x{0158}\x{0159}\x{0160}\x{0161}\x{0164}\x{0165}\x{016e}x{016f}\x{017d}\x{017e}])
« Poslední změna: 09. 03. 2011, 09:25:52 od Petr Krčmář »


stilett

Re: PERL: problem s diakritikou
« Odpověď #1 kdy: 09. 03. 2011, 09:10:03 »
Vidím, že používáte dlouhé kódy znaků, takže problém asi bude v interní reprezentaci řetězce.
Aby to fungovalo, Perl musí chápat řetězec jako unicode, ne posloupnost bytů nějakého kódování. V jakém kódování je řetězec, který posíláte do toho regexpu?
Vaší pozornosti doporučuji modul utf8. Zkuste před použitím regexpu zavolat na řetězci
utf8::decode($string); To změní jeho interní reprezentaci.

Re: Perl: problém s diakritikou
« Odpověď #2 kdy: 09. 03. 2011, 20:04:05 »
Ten retazec by mal byt kodovany ako utf8(subor z ktoreho je nacitany je kodovany ako utf8). Vas napad som vyskusal, bohuzial nezabralo.