Hlavní navigace

Názory k článku
Perličky: kódování znaků a unicode

Petr Macek aura:96
25. 9. 2008 9:13 Nový

RE: Perličky: kódování znaků a unicode

celé vlákno
Pekne vysvetleno, diky :-)
Mirek Macek
Mirek Macek (neregistrovaný)
25. 9. 2008 10:14 Nový

RE: Perličky: kódování znaků a unicode

celé vlákno
Souhlas.
Michal Svoboda
25. 9. 2008 19:43 Nový

RE: Perličky: kódování znaků a unicode

celé vlákno
Diky.
uživatel si přál zůstat v anonymitě
25. 9. 2008 15:58 Nový

Proboha, nedělejte to jako autor!

celé vlákno
Takovéto konverzní programy jsou úplně k ničemu.
Autor si ještě vybere příklad, jak ošetřit znaky azbuky, ale nafláká je do výstupu jako Unicodové HTML-symboly.
Místo opisování z ruských pramenů by asi měl uvést příklad, jak třeba převést v UTF-8 zapsané znaky z Windows-1250 na znaky sady ISO-8859-2 (tedy třeba dlouhou pomlčku na normální). Jinak to nemůže použít dál (jen na HTML-výstup).
Musím ale poznamenat, že tohle již před do 10 lety udělali programátoři Lynxu. Ten dělá převody, jak normální lidé čekají. Stačí jen se ho v Perlu naučit aktivovat na vstup nebo výstup.
P.S.
Hlavně mi není jasné, proč tohle neopsali programátoři Perlu 5.8 ?
Petr Menšík aura:22
25. 9. 2008 17:17 Nový

Re: Proboha, nedělejte to jako autor!

celé vlákno
Nevím teda proč jsou takové programy úplně k ničemu. Jediné, co mě v příkladech chybí je, jak poznám, že se konverze nepovedla a mohu na ni reagovat v programu. Jinak HTML symboly jsou jenom pro ukázku, nevidím na tom nic strašného. Sice běžně to asi takhle ohýbat chtít nebudete, ale dobře.

Taky porovnávat převádění ve webového prohlížeči, kde není zásadní ani tak správnost převodu, ale srozumitelnost přeloženého textu, aby vypadal alespoň podobně. Normální člověk není programátor. Programátor potřebuje přesně vědět, co mu leze na vstupu, potom převod nemůže dopadnout špatně. Pokud to neví, tak to je problém programátora nebo systému. Programovací jazyk tohle asi moc rozumně vyřešit nemůže.

Jinak, když budu chtít BOM u souboru, tak předpokládám můžu zapomentou na #!/usr/bin/perl na prvním řádku, co? Předpokládám že linuxový kernel takové značky nepodporuje.
Michal Svoboda
25. 9. 2008 19:57 Nový

Re: Proboha, nedělejte to jako autor!

celé vlákno
Muzete si pri prevodu nastavit variantu warn nebo croak. Pri warn bude uzivatel varovan - coz uplne v programu neodchytite ale aspon bude videt ze je neco v neporadku (to je videt i pri otaznicich ale ne tolik). Pri variante croak se provede obdoba die, coz muzete odchytit jako klasickou vyjimku pomoci eval a analyzy $@ - viz cast serialu o vyjimkach - a delat si s tim dal co potrebujete.

S tim ohybanim do HTML - proc ne, spousta skriptu muze byt nasazena v CGI prostredi. Sice do HTML muzete narvat utf8 primo (coz jsem udelal pri psani clanku), ale treba ne kazdej filtr postavenej za vas skript to zvladne apod.

BOM bych nevidel tak tragicky. Nikde neni napsano ze to musi byt prvni znak, jak to tam cpe notepad ve windows. IMHO staci, aby BOM byl na stejnym miste jako byste dal use utf8, tj. pred prvnim neascii znakem. Jestli to rozdycha kernel v shebangu je otazka, ale ja myslim ze ne. Muzete to dat jako namet na LKML :-)
Michal Svoboda
25. 9. 2008 19:49 Nový

Re: Proboha, nedělejte to jako autor!

celé vlákno
Konverzni program je pouze priklad prace s Unicode v Perlu (muzete sem hodit lepsi, mate-li). HTML varianta je jedna moznost co lze provest s nepreveditelnym (zde mysleno bezstratove) vystupem. Myslim si, ze zrovna v tomto pripade nelze jednoznacne urcit co normalni lide cekaji - proto je tam tech moznosti vice. To co chcete vy je "ztratovy prevod", tedy napr. 'č' na 'c'. Zkuste se podivat napr. na modul Text::Unidecode. A nerozcilujte se :-)
Peter Kovář
25. 9. 2008 18:50 Nový

UTF-8

celé vlákno
je definované ako sekvecia 1 až 6 bytes/octets.

http://www.cl.cam.ac.uk/~mgk25/unicode.html
Michal Svoboda
25. 9. 2008 19:58 Nový

Re: UTF-8

celé vlákno
Je to jak rikate, nerekl jsem to uplne presne. Fakt ale je, ze 5 a 6 octetove prefixy jsou 'reserved' a nepouzivaji se (zatim).
BobTheBuilder
BobTheBuilder (neregistrovaný)
29. 9. 2008 15:02 Nový

velcí i malí indiáni

No, oni to nejsou indiáni, ale královské výnosy z Gulliverových cest (Gulliver mezi Liliputy), kde je nařízeno vajíčko na měkko naklepnout na menším konci (zatímco u nepřátel na větším konci).

Pro úplnost, ještě existuje middle-endian (PDP11). Příklad: nedorozumění little/big-endian udělá ze slova UNIX - XINU, middle-endian ale NUXI (tedy byty v 16 bitovém slově jsou řazeny little-endian, ale 16 bitová slova do 32 bitového dvojslova jsou složena big-endian).

Konec IT archeologie.
lt
lt (neregistrovaný)
30. 9. 2008 23:53 Nový

Japonske znakove sady

celé vlákno
Nevim jak je to s korejskymi a cinskymi kodovanimi, ale mohu strucne objasnit jak to je s Japonskymi dvoubytovymi kodovanimi. Kuten je zpusob jak japonske znaky zakodovat pomoci dvou cisel v intervalu 1 az 94, tedy je to specifikace znakove sady, je to dane normou JIS X 0208. Existuje nekolik DBCS (dvoubytovych) kodovani, ktere specifikuji jak znaky zakodovane pomoci dvou kuten cisel zakodovat do dvou bytu. Tato kodovani se nazyvaji Shift-JIS, EUC-JP, ISO-2202-JP. Kodovani Shift-JIS se pouziva(lo) ve Windows, EUC-JP v UNIXu. Vetsinou se autori kodovani snazi nejak vyporadat s tim, ze to ma byt kompatibilni s ASCII, napriklad znaky s nulovym hornim bitem maji normalni sirku (ASCII), zatimco znaky s nastavenym hornim bitem musi byt za sebou dva a koduji jeden japonsky znak (ktery je vzdy v dvojnasobne sirce). Cele je to jeste trochu komplikovane tim, ze Japonstina ma i slabicne abecedy, ktere se nekdy koduji jednim znakem.
lt
lt (neregistrovaný)
1. 10. 2008 0:20 Nový

Re: Japonske znakove sady

celé vlákno
Jeste pro upresneni, ciste dvoubytove kodovani(DBCS) je jen Shift-JIS, naproti tomu EUC-JP ma i rozsireni, ktere koduje nektere mene bezne znaky (ktere vubec nejsou v JIS X 0208 a tedy ani v Shift-JIS) tribytove. Kodovani ISO-2202-JP je zalozene na nejakych znacich pro prepinani stranek, takze je kontextove a navic vicebytove, a je s ASCII nejhure kompatibilni.
X
X (neregistrovaný) ---.net.upc.cz
18. 11. 2009 18:01 Nový

VÍCE JAK 65 TISÍC ZNAKŮ JE ZBYTEČNÉ !!!

65 TISÍC ZNAKŮ BY MĚLO STAŠIT PRO VŠECHNY NÁRODNÍ ABECEDY NA SVĚTĚ A JEŠTĚ SPOUSTU SMAJLÍKŮ K TOMU. A TO, ŽE SE DO TĚCH 65 TISÍC ZNAKŮ NEVEJDE ČÍNŠTINA TO JE ČISTĚ JEJICH PROBLÉM !!! NEMAJÍ POUŽÍVAT TAK DEBILNÍ PÍSMO !!! (ostatně právě díky čínskému geniálnímu písmu je v číně tak nízká gramotnost)

SLOVA AUTORA:
Kódování UCS-2 používá pevných 16 bitů na symbol a dnes se již doporučuje jej nepoužívat, jelikož kvůli tomu umí reprezentovat pouze symboly z BMP…
NO PROSTĚ UPLNĚ HLOUPÉ KECY.
MĚ TĚCH 65 TISÍC ZNAKŮ STAČÍ, A TUDÍŠ MĚ STAČÍ 16 bitů na symbol. ČÍNSKÝ ZNAK NEBUDU POTŘEBOVAT NIKDY ZAPSAT !!! A NEBUDU HO POTŘEBOVAT ANI ZOBRAZIT, PROTOŽE BYCH MU STEJNĚ NEROZUMĚL !!!

AŤ MĚ AUTOR PŘESVĚDČÍ, ŽE BUDU POTŘEBOVAT POUŽÍVAT VÍCE, NEŽ 65 TISÍC ZNAKŮ !!! :D :D :D ☺☺☺☺☺☻☻☻☻☻

Zasílat nově přidané příspěvky e-mailem