🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.tcl
Article #397

Re: sqlite, rivet i polskie znaki

#397
From: Artur
Date: Tue, 25 Jul 2006 09:10
52 lines
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-mail
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>

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