Starší komentáře ke článku: Znakové sady v praxi - základní teorie

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: richi

Datum vložení: 3.12.2003 7:46:10

neboď ..... :o)

Avatar

Autor komentáře: Jozef Izso

Datum vložení: 3.12.2003 9:25:19

Vo svojich projektoch som používal kódovanie ISO-8859-2, ale pod Win95 CZ IE 5.5 mi to nezobrazovalo všetky slovenské znaky, tak som prešiel na UTF-8, všetky znaky sa zobrazujú bezproblémov, len NN4 na začiatku stránky zobrazuje divný štvorček.

Avatar

Autor komentáře: potapnik

Datum vložení: 3.12.2003 14:13:01

Pokud pouzivate nejaky sofistikovanejsi editor stranek (tim myslim PSPad :) tak ten umi vypnout identifikacni bajty UTF-8 dokumentu = odstrani ten ctverecek na zacatku (v Pspadu je to nekde v nastaveni). Podobne musite vypnout tyhle identifikacni bajty, kdyz chcete psat PHP v UTF-8 a pouzivate v kodu Header(); funkce.

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 3.12.2003 15:01:09

<I>Podobne musite vypnout tyhle identifikacni bajty, kdyz chcete psat PHP v UTF-8 a pouzivate v kodu Header(); funkce.</I>

Samozřejmě, že nemusíme. Stačí programovat inteligentně - například používat outpu buffering ;-)

Avatar

Autor komentáře: Jan Brašna

Datum vložení: 4.12.2003 3:53:31

To doufam Vileme nemyslite vazne ani ze srandy?

Avatar

Autor komentáře: Vojtěch Semecký

Datum vložení: 12.12.2003 21:55:56

Co vám ten output buffering udělal, že ho tak zásadně odsuzujete? Někdy je totiž jeho použití opravdu výhodné.

Avatar

Autor komentáře: Petr Zelenka

Datum vložení: 4.12.2003 8:02:20

Pane Malek, ozvete se mi prosim na adresu petr.zelenka@pef.czu.cz. Snazim se Vas marne kontaktovat uz asi mesic. Pravdepodobne nejaky problem s postou. Dekuji.

Avatar

Autor komentáře: Petr Zelenka

Datum vložení: 4.12.2003 8:03:43

Oprava omlouvam se, adresa je zelenka@pef.czu.cz. Vsem ostatnim se omlouvam za offtopic.

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 3.12.2003 9:32:47

Uz velmy dlho pouzivam utf-8 a je to bez problemov, lepsie kodovanie nepoznam. Velka vyhoda pouzitia utf-8 je pri XHTML kde nemusim uvadzat xml prolog...

> Zde jsme omezeni možnostmi systému, způsobem, jakým s textem pracuje,
> a svými požadavky na komunikaci s ním. Zde může být z hlediska výkonnosti
> práce s textem výhodnější použít přímo základní tvar UCS-2. Práce s 16bitovými

databazovy stroj ktory nevie nastavit kodovanie pre kazdu databazu a v lepsom pripade pre kazde pripojenie nie som ochtny povazovat za databazu.

> znaky je totiž pro počítač mnohem pohodlnější, než v případě znaků s variabilní
> délkou zápisu (UTF-8). Jde hlavně o činnosti, které provádí přímo databáze,
> například vyhledávání, řazení a třídění, konverze velikosti písmen a nebo i

Triedit utf-8 je podstatne jednoduchsie ako triedit iso-8859-2 :).

> jednoduché zjištění délky textu (které v případě UTF-8 může znamenat nutnost
> projít celý text). Pak ovšem přichází ke slovu konverze znakových sad.

Ked chcem vediet aky jedlhy text tak musim vo vacsine pripadov najst znak 0x00. V db mozem mat len zopar typov retazcov:
1) pevna dlzaka, doplnovane white spaces.
2) premenliva dlazka (obmedzena, neobnedzena)
dlzka je pri 1) jasna pri 2) musim vzdy prejst cely retazec.

Avatar

Autor komentáře: Ritchie

Datum vložení: 4.12.2003 12:17:50

> Triedit utf-8 je podstatne jednoduchsie ako triedit iso-8859-2 :).
Třídit kódování podle mě nelze. Vždy se třídí text v nějakém kódování podle pravidel nějakého jazyka. A mnohem víc záleží na jazyku než kódování. Třeba takové české třídění je skutečně lahůdkové. Proč by měl být zápis v iso8859-2 složitější na třídění než v utf-8 za předpokladu stejného jazyka?

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 4.12.2003 13:46:40

utf-8 je tak navrhnute.

Avatar

Autor komentáře: Ritchie

Datum vložení: 4.12.2003 16:20:23

Jak navrhnuté? Ono porozumí české spřežce ch, zvládá dvouprůchodové třídění, atd.?

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 4.12.2003 20:25:59


<a href='http://www.unicode.org/unicode/reports/tr10/#Main_Algorithm' target='_blank'>http://www.unicode.org/unicode/reports/tr10/#Main_Algorithm</a>

Avatar

Autor komentáře: Ritchie

Datum vložení: 4.12.2003 21:43:00

Díky, asi se o technologii unicode začnu víc zajímat. Přesto algoritmus lze bez problémů použít i pro iso kódovací stránky. Rovněž tabulky porovnání lze snadno extrahovat, neboť existuje zobrazení z iso do unicode. Takže neplatí, že třídění v unicode je jednodušší. Nejvýšše existují připravená data (tabulky porovnání), která ale lze jednoduše převést.

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 5.12.2003 1:33:42

Nie pre iso asi tazko. Pri uft-8 sa najaprav spravy "rozklad" ktory ma dost specificke, ale velmy jednoduche pravidla. Dalsov vyhodou pri triedeni je to ze prvy baj hovori o dalsom mieste kde je potrebne uskutocnit porovanie.

Avatar

Autor komentáře: Shadow21

Datum vložení: 3.12.2003 23:29:31

1. zaujimalo by ma nakolko je podporovane Utf-8 v prehliadacoch a ktore ho nepoznaju??

2. mate niekto skusenosti s UTF-8 a MySQL hlavne triedenie podla abecedy (diakritika) ??

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 4.12.2003 7:24:11

1) Vsetky normalne...

2) Z tohoto pohladu neznazvem MySQL databazou. V MySQL je mozne nastavit encoding len pre cely server.

Ak potrebujes ine kodovanie mozes skusit nastavit encoding len pre session. To je vsak len o prekodovani dat.

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 4.12.2003 7:36:35

Add 2 - záleží na verzi MySQL. Od čtyřky výše lze nastavit jakékoli kódování pro jakýkoli sloupec, tabulku, databázi či operaci zvlášť. MySQL zkrátka je databáze, pouze dosud neobsahovala řadu funkcionalit, které byly v souladu s jejím určením naprosto zbytečné ;-)

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 4.12.2003 8:57:49

To rad pocujem ze MySQL je uz blizko :)

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 4.12.2003 9:35:04

> MySQL zkrátka je databáze, pouze dosud neobsahovala řadu funkcionalit,
> které byly v souladu s jejím určením naprosto zbytečné ;-)

hm... a potom to cele dopadlo tak ze logika aplikacie musi by na skripte co vyvolalo potrebu zbytocnosti ako je SMARTY, ...

Ak logika aplikacie je v skripte aplikacie je "pomala". Staci len malo:
1) spravit aplikacny server
- idealne riesenie
- bohuzial v php nerealizovatelne (mozno cez SRM, ale je to beta)

2) posunut vsetko co ide az do db
- problem s prenositelnostou (???)
- skripty sa zmenia len SELECT, INSERT a UPDATE....

Mate este ine riesenie? Ak chcete diskutovat, nebude problem na inervale zalozit forum. Myslim ze to bude zaujimave. (Databazy, sablony, sposoby programovania v web aplikacii) Skor by som privital vseobecnejsi pohlad....

PS. ak mozete nedajte replay (je to mino clanku), ale zalozte nove forum a vlozte linku...

Avatar

Autor komentáře: D a Z

Datum vložení: 5.12.2003 9:46:22

Tak jsem pln naděje zapátral a ta podpora je až od MySQL 4.1, která je zatím jen v alpha verzi :o(

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 5.12.2003 10:53:59

MySQL 4.1 používám naostro už od jejího uvedení a zatím jsem nenarazil na problémy při klasickém provozu. Shodou okolností právě včera vyšla nová alfa 4.1.1 s výpisem změn na deset stránek, takže to zrovna louskám. Bohužel jsou tam i změny nekompatibilní s předešlou verzí.

Avatar

Autor komentáře: Jméno a příjmení

Datum vložení: 23.12.2003 2:12:26

Diky vsetkym za odpovede :-)

Avatar

Autor komentáře: Jan Brašna

Datum vložení: 4.12.2003 3:56:57

Proc hned recode, ktery na hostinzich nebyva, kdyz mame k dispozici povetsinou iconv?

Avatar

Autor komentáře: Jirka Kosek

Datum vložení: 4.12.2003 9:54:10

Zajímavé a důležité téma, ale pro lepší srozumitelnost by autor neměl trousit pojmy znaková sada a kódování bez rozmyslu. V textu se objevují takové protimluvy jako "kódování Unicode", nebo "znaková sada [UTF-8]". Pro lepší srozumitelnost by myslím stálo za to používat termíny konzistentně. Od dob HTML 4.0 a XML 1.0 dokumenty používají jen jednu znakovou sadu ISO 10646 alias Unicode. Pro její zapsání do souboru/poslání po síti je možné použít jedno z mnoha kódování (windows-1250, iso-8859-2, utf-8, utf-16, ...).

Původ terminilogických zmatků je jednoduchý. V pre-unicode době byly pro nás pojmy znaková sada a kódování ekvivalentní (např. windows-1250, iso-8859-2). V dnešní post-unicode době je podle mne pro lepší srozumitelnost nazvývat staré 8bitové znakové sady jako kódování, zvláště v kontextu HTML/XML, které jako znakové sady používají výhradně Unicode. Narozdíl od UTF-8/16 jsou to kódování, která dokáží reprezentovat jen podmnožinu celé znakové sady Unicode.

Avatar

Autor komentáře: Petr Bříza

Datum vložení: 8.12.2003 14:06:21

Máte pravdu, na tyto termíny je třeba dávat pozor, a já jsem pár chyb nasekal. Snad mi odpustíte :)
Avšas osmibitovým znakovým sadam bych nepokládal za kódování. Kódováním je samotný jednoduchý osmibitový zápis kódů znaků, avšak jejich přiřazení k jednotlivým znakům je znaková sada. Tedy windows-1250 a iso-8859-2 jsou různé <I>znakové sady</I>, avšak totožné <I>kódování</I>. Naopak utf-8 a utf-16 jsou různá kódování, avšak používají stejnou znakovou sadu (Unicode). Co se týká kódování utf-16, nemyslím si že by mělo velké uplatnění, já osobně jsem jej zatím nikdy nepotřeboval, takže se jím v seriálu nebudu zabývat.
HTML/XML používají výhradně Unicode? To považuji za nesmysl, zřejmě jsem vás špatně pochopil.

Avatar

Autor komentáře: Jiří Kosek

Datum vložení: 9.12.2003 12:14:42

Ve skutečnosti je problém kódování vs. znaková sada o dost složitější, od obstraktní představy znaku k jeho reprezentaci v počítači vede 5 vrstev. Viz: <a href='http://www.unicode.org/reports/tr17/' target='_blank'>http://www.unicode.org/reports/tr17/</a>

windows-1250 a iso-8859-2 jsou samozřejmě znakové sady, ale také jsou to kódování, která umí reprezentovat jen podmnožinu znakového repertoáru Unicode. Protože většina prostředí je dnes vystavena nad Unicode, je podle mne vhodnější držet se termínu kódování.

Asi jste spíš nepochopil standardy HTML/XML. Oba dva jako znakovou sadu používají ISO 10646/Unicode:

<a href='http://www.w3.org/TR/REC-html40/charset.html#h-5.1' target='_blank'>http://www.w3.org/TR/REC-html40/charset.html#h-5.1</a>
HTML uses the much more complete character set called the Universal Character Set (UCS), defined in [ISO10646]. This standard defines a repertoire of thousands of characters used by communities all over the world.
The character set defined in [ISO10646] is character-by-character equivalent to Unicode ([UNICODE]).

<a href='http://www.w3.org/TR/REC-xml' target='_blank'>http://www.w3.org/TR/REC-xml</a>
Definition: A character is an atomic unit of text as specified by ISO/IEC 10646 [ISO/IEC 10646] (see also [ISO/IEC 10646-2000]

Kódování UTF-16 má naopak velké uplatnění. Je to implicitní kódování Unicode, které interně používají například Windows NT a výše, Java atd. Mnoho formátů souborů (např. MS Office) používají právě UTF-16. Ve Windows je toto kódování pojmenováno jako Unicode, což může být trochu zavádějící. Starší verze Javy používaly místo UTF-16 UCS-2, což je podmnožina UTF-16, které nepodporuje surrogate pairs -- mechanismus, kdy jede znak může být kódován do dvou slov. UCS-2 proto dovoluje zachytit jen 65536 znaků, kdežto UTF-16 více jak milión.

Avatar

Autor komentáře: Petr Bříza

Datum vložení: 9.12.2003 13:06:40

CP1250 x ISO:
Tyto sady pocházejí z doby před Unicode, takže bych netvrdil, že z něj vycházejí (tvoří jeho podmnožinu) ale spíš že Unicode zahrnuje také znaky z těchto sad. Ovšem je pravda, že můžeme říci, že dnes lze Windows-1250 považovat za kódování, protože je to způsob zápisu <I>vybraných</I> znaků Unicode převedením na určité hodnoty bajtů. Takhle můžeme slovíčkařit doaleluja, myslím že na tom příliš nezáleží, důležité je problematiku dobře pochopit a já se ji snažím čtenářům alespoň co nejvíce přiblížit.
Že jsem nepochopil HTML/XML, to jste psát nemusel, to je pro mě docela tvrdá rána :) Číst specifikace mě moc nebaví (snad to není velký prohřešek?), ale odkázané dokumenty jsem omknul a používají váš pohled na věc, a vaši terminologii (nebo spíše vy jejich) takže máte zřejmě pravdu a váš výklad je přesnější. Jako znaková sada je určena Unicode a ty prehistorické sady jsou považovány za její kódování. Tímto se omluvám všem čtenářům, že je (ne záměrně!) mystifikuji :)
Unicode a UTF-16:
Že většina prostředí používají interně UTF-16 považuji ve svém oboru za irelevantní, protože se zde zabývám především přípravou textu pro transportní vrstvy (http, mail apod.) kde se UTF-16 příliš nevyužívá. Pokud někdo přece jen bude muset konvertovat text z/do UTF-16, já mu bohužel nepomůžu, protože ačkoli bych si mohl problematiku více nastudovat, nemám praktické zkušenosti, takže o tom raději nebudu ani psát. Jinak díky za výklad, to nemuselo být, protože s možnostmi tohoto kódování jsem již seznámen :)
Opět mě zarazilo že podle vás je UCS-2 podmnožinou UTF-16 - snad by bylo lepší říct že s UCS-2 lze zakódovat podmnožinu znaků ze všech znaků, které lze zakódovat pomocí UTF-16, ne? Tedy pokud se držíte toho, že UTF-16 a UCS-2 jsou kódování a nepovažujete je za množiny. To jen tak na okraj, jak jsem již řekl - slovíčkaření podle mě není nutné.

Avatar

Autor komentáře: Jiří Kosek

Datum vložení: 9.12.2003 13:22:02

Snaha o přiblížení problematiky čtenářům je správná, proto jsem upozornil na některé terminologické nesrovnalosti, které podle mne vedly k nižší srozumitelnosti textu.

S tím XML/HTML si to neberte osobně, myslel jsem znakový model XML/HTML. Tím, že XML/HTML je založeno na Unicode, je podle mne v tomto kontextu opravdu zavádějící hovořit o windows-1250 a iso-8859-2 jako o znakových sadách.

Avatar

Autor komentáře: Jakub

Datum vložení: 4.12.2003 10:19:14

Nedoporučuji v PHP používat knihovnu recode, protože na konec převedeného řetězce přidává znaky, které tam nepatří. Viz <a href='http://bugs.php.net/bug.php?id=17154' target='_blank'>http://bugs.php.net/bug.php?id=17154</a> a <a href='http://bugs.php.net/bug.php?id=19776' target='_blank'>http://bugs.php.net/bug.php?id=19776</a>.

V PHP se dá použít knihovna iconv, komu by nestačila, může použít mb_string (oboje dostupné na rozdíl od recode i pro Windows).

Avatar

Autor komentáře: Miroslav Masar

Datum vložení: 3.3.2004 9:51:49

prevadzkujem wap stranku <B><a href='http://mirozv.iglu.cz</B>' target='_blank'>http://mirozv.iglu.cz</B></a> .Dlhsi cas som mal problemy s diakritikou. Pisal som rozne skripty na prevod pismen. Casto sa stretavam s roznymi konvertorami diakritiky. pritom jedina vec co som mal spravit bola poslat v php hlavicku : <B>Header('Content-type:text/vnd.wap.wml; charset=UTF-8'); </B>. Teraz vsetko slape perfektne. S diakritikou nie su ziadne problemy.

Avatar

Autor komentáře: hannes

Datum vložení: 26.11.2006 18:51:26

zdravim panove, mam problem pri parsrovani XML dokumentu s diaktriktikou (atributy a hodnoty uzlů). Můj xml dokument ma <?xml version="1.0" encoding="UTF-8" ?> a jeste pro uplnost jsem nastvail kodovani pres xml_parser_create("UTF-8"); Po parsingu je diakritika uplne znicena ... Nemate nejakou zkusenost jak to vyresit (obalovat data do CDATA se mi nezda košér...) DIKY za navrhy

Zpět na článek | Úvodní stránka Interval.cz