Article View: pl.comp.lang.perl
Article #52533Re: use encoding utf.Czy da się innaczej ?
From: Tomasz Konojacki
Date: Mon, 17 Jun 2013 19:50
Date: Mon, 17 Jun 2013 19:50
67 lines
2646 bytes
2646 bytes
Cześć!
yoawaoy@gmail.com wrote:
> Czy da się zmienić znaki diakrytyczne polskie na duże jeszcze przed encode ?
> Jak bym to teraz chciał zrobić wrzucając uc befor encode to literki pl zostały by małymi.
Da się. Problem tkwi w tym, że Perl nie wie jakie jest kodowanie pliku
ze skryptem (traktuje go jako strumień bajtów, a nie tekst w UTF-8).
Musisz mu powiedzieć, że jest inaczej, dodając na początku tego skryptu
następującą dyrektywę:
use utf8;
Gdy tej dyrektywy nie ma, ta linia:
$line =~ /(POŁOŻNICTWO)/ig;
jest źle interpretowana, ponieważ zawiera znaki spoza ASCII które są
interpretowane jako jakieś pozbawione sensu bajty, a nie, tak jak
powinny, jako UTF-8.
$rt=encode("utf-8",$upline);
To właśnie powoduje, że $rt też zawiera strumień bajtów, pozbawiony
flagi UTF-8 i dlatego wtedy to "działa".
Pzdr,
Tomasz
PS. Dobrym zwyczajem jest nieużywanie fileglobowych uchwytów plików.
Czyli zamiast:
open(DS,"wydaw file.txt");
daj:
open(my $ds, "wydaw file.txt");
Podstawowym problemem z tymi pierwszym uchwytem jest to, że jest on
zawsze w globalnym zakresie, z czego mogą wyniknąć różne, dziwne błędy,
na przykład:
sub open_handle {
open (A, '>', 'lol.txt');
}
open_handle;
print A "test";
To nie wyświetli błędu mimo iż wydawałoby się, że A jest lokalne tylko
dla funkcji open_handle. Następujący kod już wywoła błąd:
sub open_handle {
open (my $a, '>', 'lol.txt');
}
open_handle;
print $a "test";
PS2. strict i warnings nie bolą :)
--
"Lisp has all the visual appeal of oatmeal with fingernail clippings
mixed in." - Larry Wall
Technical Details
Message-ID:
<kpnpta$iv$1@mx1.internetia.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.supermedia.pl!news.nask.pl!news.nask.org.pl!news.internetia.pl!not-for-mailReferences:
<de5939b5-79f9-4e47-a83c-a05cac7f867b@googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.supermedia.pl!news.nask.pl!news.nask.org.pl!news.internetia.pl!not-for-mail From: Tomasz Konojacki <me@xenu.tk> Newsgroups: pl.comp.lang.perl Subject: Re: use encoding utf.Czy da się innaczej ? Date: Mon, 17 Jun 2013 21:50:44 +0200 Organization: Netia S.A. Lines: 67 Message-ID: <kpnpta$iv$1@mx1.internetia.pl> References: <de5939b5-79f9-4e47-a83c-a05cac7f867b@googlegroups.com> NNTP-Posting-Host: 178-37-225-215.adsl.inetia.pl Mime-Version: 1.0 X-Trace: mx1.internetia.pl 1371499243 607 178.37.225.215 (17 Jun 2013 20:00:43 GMT) X-Complaints-To: abuse@inetia.pl NNTP-Posting-Date: Mon, 17 Jun 2013 20:00:43 +0000 (UTC) X-Tech-Contact: usenet@internetia.pl User-Agent: Noworyta News Reader/2.9 X-Server-Info: http://www.internetia.pl/ Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit