Article View: pl.comp.lang.tcl
Article #397Re: sqlite, rivet i polskie znaki
From: Artur
Date: Tue, 25 Jul 2006 09:10
Date: Tue, 25 Jul 2006 09:10
52 lines
3071 bytes
3071 bytes
Cześć! Kodowanie znaków to staly problem. Kilka informacji o kodowaniu i Tcl, które zebralem przy moich walkach ze znakami. Tcl zapisuje wewnętrznie znaki tylko w postaci UTF8. Przy komunikowaniu z peryferią są one konwertowane wedlug ustawień w encoding system Przy tej okazji może się zdarzyć, że informacje mogą zostać zgubione jeśli na przyklad w ustawieniu encoding system jest iso8859-1 a wypisuje się polskie znaki. Wedlug dokumentacji każda bibliotheka Tcl w C powinna używać przy komunikacji z zewnątrz funkcji Tcl_UtfToExternal lub Tcl_ExternalToUtf. To one biorą wartości domyśle z (encoding system) lub umozliwiać ustawienie encoding to jak jest to robi fconfigure dla strumieni I/O. Niestety te funkcje istnieją od Tcl8.0 i niektóre bibliteki ich nie używają. Dla języków zachodnioeuropejskich to żaden problem i dlatego autorom tych biblitek to nie przeszkadza. Tcl umożliwia też zapisanie danych binarnych w string. Czyli można w pamięci Tcl skonwertować UTF8 na celowy encoding i przez to obejść jakby brak konwertowania przy zapisie IO. to próba ze strumieniem do pliku set t ś set f [open test.txt w] fconfigure $f -encoding binary puts -nonewline [encoding convertto iso8859-2 $t] close $f w test.txt znajduje się jeden bajt w iso8859-2. Może to też dziala dla sqlite. Warto może by zerknąć do kodu źródlowego sqlite i poszykać jak to jest rzeczywiście jest robione. Tak jak powinno być, to jest widoczne przy originalnych funkcjach I/O w Tcl. Co do HTML to UTF8 jest bardzo dobry bo można wtedy bez problemu mieszać kilka jezyków jednocześnie. Oczywiście potrzebny jest w HEADER <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Technical Details
Message-ID:
<1153818614.272804.78930@m73g2000cwd.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!postnews.google.com!m73g2000cwd.googlegroups.com!not-for-mailReferences:
<e9omf0$hge$1@nemesis.news.tpi.pl> <1fuynrdp48kmb.dlg@takeda.tk.invalid> <ea0ru6$2eq$1@nemesis.news.tpi.pl> <xafy28nm2am1$.dlg@takeda.tk.invalid>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!postnews.google.com!m73g2000cwd.googlegroups.com!not-for-mail From: "Artur" <mail@xdobry.de> Newsgroups: pl.comp.lang.tcl Subject: Re: sqlite, rivet i polskie znaki Date: 25 Jul 2006 02:10:14 -0700 Organization: http://groups.google.com Lines: 54 Message-ID: <1153818614.272804.78930@m73g2000cwd.googlegroups.com> References: <e9omf0$hge$1@nemesis.news.tpi.pl> <1fuynrdp48kmb.dlg@takeda.tk.invalid> <ea0ru6$2eq$1@nemesis.news.tpi.pl> <xafy28nm2am1$.dlg@takeda.tk.invalid> NNTP-Posting-Host: 62.225.37.69 Mime-Version: 1.0 X-Trace: posting.google.com 1153818620 31243 127.0.0.1 (25 Jul 2006 09:10:20 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Tue, 25 Jul 2006 09:10:20 +0000 (UTC) User-Agent: G2/0.2 X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1,gzip(gfe),gzip(gfe) X-HTTP-Via: 1.1 G8SLV (NetCache NetApp/5.6.2R1D19), 1.1 G8SLV (NetCache NetApp/5.6.2R1D19) Complaints-To: groups-abuse@google.com Injection-Info: m73g2000cwd.googlegroups.com; posting-host=62.225.37.69; posting-account=LCgZWAwAAABJR_8tjAef_hUAajXeKdEF Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit