Forum » Programiranje » kodna tabela
kodna tabela
kondratiev ::
Prosim za pomoč pri šumnikih. Ali ve kdo kako v pretoriti šumnike, da bodo vidni. Za tele imam tabelo za čć pa ne:
® Ž
ľ ž
© Š
ą š
Thx
® Ž
ľ ž
© Š
ą š
Thx
vuego ::
Ti iz iso 8859-2 pretvarjaš v 8859-1 ???
No go. V 8859-1 ne boš mogel to izvest, razen če "goljufaš" s fonti.
No go. V 8859-1 ne boš mogel to izvest, razen če "goljufaš" s fonti.
BlueRunner ::
Heh...
Kar ti bo verjetno še najbolj pomagalo je ultimativna tabela slovenskih znakov Mihe Mazzinija. Trenutno pa se jo najde na naslovu http://friends.s5.net/mazzini/tabela04s.... Oznaka kodne tabele ti pove na katerem mestu se nahaja znak, potem pa samo še pogledaš v katero kodno tabelo upošteva datoteka/font/whatever.
Naprimer: če imaš vhodno datoteko v starem JUS standardu, potem se Ž nahaja na lokaciji 64. Če jo odpreš kot ISO-8859-1 (spodnjih 127 znakov se je včasih imenovalo ASCII nabor), boš za ta znak videl znak '@'. Za konverzijo v datoteko, ki bo "normalno uporabna" v Oknih, ki imajo privzet user locale 1250, moraš kodo 64 spremeniti v kodo 142... in tako naprej za vse znake, ki jih pretvarjaš.
Pri vsemu pa je potrebno paziti na nekaj malenkosti. Ena izmed njih je tudi ta, da veliko 8-bitnih kodnih tabel ne vključuje vseh znakov slovenske abecede. Takšni sta npr. kodni tabel ISO-8859-1 in MS-1252. Okna delujejo tako, da operirajo z pojmom "user locale" - uporabnikova regija. Ta nastavitev pa med določa tudi privzeto kodno tabelo s katero se interpretira datoteke brez ISO-10646 markerjev. To se velikokrat pokaže v beležnici (notepad), kjer uporabnik z angleškim "user locale" odpre datoteko s šumniki, ki je bila shranjena na računalniku, kjer je imel uporabnik slovenski "user locale". V tem primeru so bili šumniki shranjeni po kodni tabeli MS-1250, ko pa naslovnik datoteko odpre, se vse kode interpretira po kodni tabeli MS-1252. Lepa značilnost te težave je "čudna" sprememba znaka "č" (s kodo 232 po MS-1250) v znak "è" (s kodo 232 po ISO-8859-1) in "izginotje" Š-jev in Ž-jev. Včasih se to lepo vidi na starejših spletnih straneh, ki ne nosijo oznake kodne tabele, zaradi česar se jih mora (v skladu z W3C referencami) interpretirati po ISO-8859-1 kodni tabeli (na misel mi pade www.dnevnik.si).
Zgodba ima seveda veliko variacij, z nekaj vprašanji, pa se da velikokrat lepo določiti na kateri točke je bila narejena napaka. Seveda pa je predpogoj ta, da se pozna kodne tabele in dogodke, pri katerih se dogajajo potencialno napačne interpretacije. Zanimiva težava, ki ji je nekdo imel, je bila ta, da mu nikakor ni uspevalo shraniti znaka "č" v tekstovno datoteki, ki jo je oblikoval z beležnico (nodepad). Razlog je bil ta, da je uporabnik sicer imel nastavljen slovenski razpored tipk na tipkovnici, njegov "user locale" pa je bil angleški. Pri vsakem shranjevanju datoteke pa je beležnica naredila konverzijo iz Unicode v MS-1252. Znaka "š" in "ž" sta se ohranila, ker v tabeli obstajata, znak "č" pa ne. Zarati tega je "izgubil" svojo dekoracijo (caron) in iz znaka "ccaron" postal samo znak "c". Če človek pozna konverzije, je to čisto logično, če pa ne, pa to postane nočna mora, saj sploh ne ve kam gledati.
Mimogrede, Okna 2000 in XP (oziroma celotna družina oken NT od 3.1 naprej) datoteke z 8-bitnimi kodnimi tabelami dejansko interpretira, saj jih pri branju dejansko pretvarja v Unicode, pri pisanju pa iz Unicode nazaj v 8-bitno tabelo. Sicer pa se pri bolj globokem brskanju dejansko ugotovi, da Microsoft ne reče 8-bitna tabela, temveč OEM tabela, ki pa je lahko enobajtna (SBCS), ali pa dvobajtna (DBCS). "Dvobajtnost" pa se pri nas sicer ne pojavlja (kar pomeni, da je moja zgornja razlaga načeloma pravilna), pojavlja pa se v Oknih, ki so namenjena vzhodno-azijskim tržiščem (Japonska, Kitajska, Koreja), kjer so zaradi svoje besede že od začetka uporabljali 16-bitne kodne tabele. Za striktno razlago se namesto 8-bitno napiše OEM, pa postanejo izjave resnične tudi za te jezikovne skupine. Kompliciranje pri celotni zgodbi pa je predvsem rezultat dolgoživosti 32-bitne razširitve starih Oken 3.11. Zanimivo, da so se pri družini NT, že v zasnovi odločili za 16-bitni Unicode nabor, ki na videz sicer deluje, vendar pa ima tudi svoje pomankljivost, ki sedaj že začenjajo povzročati težave.
Efekte transformacij med kodnimi tabelami je najlepše videti v kakšnem programu, ki omogoča nadzor nad interpretacijo tekstovnih datotek. Sicer zna to delati tudi MS Word, osebno pa najraje uporabljam SuperEdi (http://www.wolosoft.com/en/superedi/), ki je brezplačen vključuje pa podporo za večino za nas zanimivih kodnih tabel. Tako lahko z njim človek poskuša kodne tabele, dokler ne najde tiste v kateri je bila datoteka shranjena. Potem pa isto datoteko še enkrat shrani, vendar pa izbere kodno tabelo, ki mu bolj ustreza (priporočam UTF-8, ali pa UTF-16). Težava pa je, da SuperEdi ne podpira starih JUS standardov, še posebej pa ne nepraktičnega 7-bitnega JUS I.B1.002. Te je pač potrebno pretvarjati ročno.
Globoka zamera do ISO-646 (ki je podlaga za standard JUS) pa pri meni leži v dejstvu, da je ECMA že v sredini '80 (prejšnjega stoletja ) definirala 8-bitne kodne tabele, kjer je že druga tabla vključevala vse znake potrebne za naše krilatce. Ti standardi, pa so bili kasneje potrjeni tudi s strani ISO, kjer so postali del standarda ISO-8859 (ki vključuje tudi 2. del... ti. zloglasno ISO-8859-2). ECMA je iz vidika standardizacije opravila vse potrebno dovolj zgodaj in veliko pred velikim bumom računalništva v Jugoslaviji ter Sloveniji. Na žalost pa takratni kvazi strokovanjki svojega razmišljanja niso uspeli pravočasno premakniti na 8-bitne kodne tabele (kot nekateri še danes ne poznajo splošnega sistema ISO-10646). To je imelo za posledico malo morje domačih mojstrov, ki so "pekli" EPROME z "YUSCII" naborom znakov, s čemer so dobesedno uničevali znake, ki se jih je takrat v računalništvu izkoriščalo še za vse kaj drugega. Še bolj jim pa zamerim, da so taisti "mojstri" še v sredini '90 razvijali rešitve, ki so podatke zapisovale v tej kodni tabeli. Formalna izobrazba morda res ne pomeni veliko, ampak njeno pomankanje lahko človeka precej zaslepi za včasih pomembne zadeve. Še pomnite tovariši: "CD ĐDOS" ali pa "C:ĐDOSĐCOMMAND.COM".
Na prste ene roke bi se dalo prešteti tiste strokovnjake, ki so že takrat kričali, da je položaj nevzdržen, in, da je potrebno ukrepati, pa jih je povodenj "znalcev" na žalost utišala. Vsem tistim, ki se ukvarjajo s kodnimi tabelami in tekstovni podatki v splošnem, pa v branje priporočam sicer staro, vendar pa še vedno zelo relevantno stran http://www.joelonsoftware.com/articles/....
Kar ti bo verjetno še najbolj pomagalo je ultimativna tabela slovenskih znakov Mihe Mazzinija. Trenutno pa se jo najde na naslovu http://friends.s5.net/mazzini/tabela04s.... Oznaka kodne tabele ti pove na katerem mestu se nahaja znak, potem pa samo še pogledaš v katero kodno tabelo upošteva datoteka/font/whatever.
Naprimer: če imaš vhodno datoteko v starem JUS standardu, potem se Ž nahaja na lokaciji 64. Če jo odpreš kot ISO-8859-1 (spodnjih 127 znakov se je včasih imenovalo ASCII nabor), boš za ta znak videl znak '@'. Za konverzijo v datoteko, ki bo "normalno uporabna" v Oknih, ki imajo privzet user locale 1250, moraš kodo 64 spremeniti v kodo 142... in tako naprej za vse znake, ki jih pretvarjaš.
Pri vsemu pa je potrebno paziti na nekaj malenkosti. Ena izmed njih je tudi ta, da veliko 8-bitnih kodnih tabel ne vključuje vseh znakov slovenske abecede. Takšni sta npr. kodni tabel ISO-8859-1 in MS-1252. Okna delujejo tako, da operirajo z pojmom "user locale" - uporabnikova regija. Ta nastavitev pa med določa tudi privzeto kodno tabelo s katero se interpretira datoteke brez ISO-10646 markerjev. To se velikokrat pokaže v beležnici (notepad), kjer uporabnik z angleškim "user locale" odpre datoteko s šumniki, ki je bila shranjena na računalniku, kjer je imel uporabnik slovenski "user locale". V tem primeru so bili šumniki shranjeni po kodni tabeli MS-1250, ko pa naslovnik datoteko odpre, se vse kode interpretira po kodni tabeli MS-1252. Lepa značilnost te težave je "čudna" sprememba znaka "č" (s kodo 232 po MS-1250) v znak "è" (s kodo 232 po ISO-8859-1) in "izginotje" Š-jev in Ž-jev. Včasih se to lepo vidi na starejših spletnih straneh, ki ne nosijo oznake kodne tabele, zaradi česar se jih mora (v skladu z W3C referencami) interpretirati po ISO-8859-1 kodni tabeli (na misel mi pade www.dnevnik.si).
Zgodba ima seveda veliko variacij, z nekaj vprašanji, pa se da velikokrat lepo določiti na kateri točke je bila narejena napaka. Seveda pa je predpogoj ta, da se pozna kodne tabele in dogodke, pri katerih se dogajajo potencialno napačne interpretacije. Zanimiva težava, ki ji je nekdo imel, je bila ta, da mu nikakor ni uspevalo shraniti znaka "č" v tekstovno datoteki, ki jo je oblikoval z beležnico (nodepad). Razlog je bil ta, da je uporabnik sicer imel nastavljen slovenski razpored tipk na tipkovnici, njegov "user locale" pa je bil angleški. Pri vsakem shranjevanju datoteke pa je beležnica naredila konverzijo iz Unicode v MS-1252. Znaka "š" in "ž" sta se ohranila, ker v tabeli obstajata, znak "č" pa ne. Zarati tega je "izgubil" svojo dekoracijo (caron) in iz znaka "ccaron" postal samo znak "c". Če človek pozna konverzije, je to čisto logično, če pa ne, pa to postane nočna mora, saj sploh ne ve kam gledati.
Mimogrede, Okna 2000 in XP (oziroma celotna družina oken NT od 3.1 naprej) datoteke z 8-bitnimi kodnimi tabelami dejansko interpretira, saj jih pri branju dejansko pretvarja v Unicode, pri pisanju pa iz Unicode nazaj v 8-bitno tabelo. Sicer pa se pri bolj globokem brskanju dejansko ugotovi, da Microsoft ne reče 8-bitna tabela, temveč OEM tabela, ki pa je lahko enobajtna (SBCS), ali pa dvobajtna (DBCS). "Dvobajtnost" pa se pri nas sicer ne pojavlja (kar pomeni, da je moja zgornja razlaga načeloma pravilna), pojavlja pa se v Oknih, ki so namenjena vzhodno-azijskim tržiščem (Japonska, Kitajska, Koreja), kjer so zaradi svoje besede že od začetka uporabljali 16-bitne kodne tabele. Za striktno razlago se namesto 8-bitno napiše OEM, pa postanejo izjave resnične tudi za te jezikovne skupine. Kompliciranje pri celotni zgodbi pa je predvsem rezultat dolgoživosti 32-bitne razširitve starih Oken 3.11. Zanimivo, da so se pri družini NT, že v zasnovi odločili za 16-bitni Unicode nabor, ki na videz sicer deluje, vendar pa ima tudi svoje pomankljivost, ki sedaj že začenjajo povzročati težave.
Efekte transformacij med kodnimi tabelami je najlepše videti v kakšnem programu, ki omogoča nadzor nad interpretacijo tekstovnih datotek. Sicer zna to delati tudi MS Word, osebno pa najraje uporabljam SuperEdi (http://www.wolosoft.com/en/superedi/), ki je brezplačen vključuje pa podporo za večino za nas zanimivih kodnih tabel. Tako lahko z njim človek poskuša kodne tabele, dokler ne najde tiste v kateri je bila datoteka shranjena. Potem pa isto datoteko še enkrat shrani, vendar pa izbere kodno tabelo, ki mu bolj ustreza (priporočam UTF-8, ali pa UTF-16). Težava pa je, da SuperEdi ne podpira starih JUS standardov, še posebej pa ne nepraktičnega 7-bitnega JUS I.B1.002. Te je pač potrebno pretvarjati ročno.
Globoka zamera do ISO-646 (ki je podlaga za standard JUS) pa pri meni leži v dejstvu, da je ECMA že v sredini '80 (prejšnjega stoletja ) definirala 8-bitne kodne tabele, kjer je že druga tabla vključevala vse znake potrebne za naše krilatce. Ti standardi, pa so bili kasneje potrjeni tudi s strani ISO, kjer so postali del standarda ISO-8859 (ki vključuje tudi 2. del... ti. zloglasno ISO-8859-2). ECMA je iz vidika standardizacije opravila vse potrebno dovolj zgodaj in veliko pred velikim bumom računalništva v Jugoslaviji ter Sloveniji. Na žalost pa takratni kvazi strokovanjki svojega razmišljanja niso uspeli pravočasno premakniti na 8-bitne kodne tabele (kot nekateri še danes ne poznajo splošnega sistema ISO-10646). To je imelo za posledico malo morje domačih mojstrov, ki so "pekli" EPROME z "YUSCII" naborom znakov, s čemer so dobesedno uničevali znake, ki se jih je takrat v računalništvu izkoriščalo še za vse kaj drugega. Še bolj jim pa zamerim, da so taisti "mojstri" še v sredini '90 razvijali rešitve, ki so podatke zapisovale v tej kodni tabeli. Formalna izobrazba morda res ne pomeni veliko, ampak njeno pomankanje lahko človeka precej zaslepi za včasih pomembne zadeve. Še pomnite tovariši: "CD ĐDOS" ali pa "C:ĐDOSĐCOMMAND.COM".
Na prste ene roke bi se dalo prešteti tiste strokovnjake, ki so že takrat kričali, da je položaj nevzdržen, in, da je potrebno ukrepati, pa jih je povodenj "znalcev" na žalost utišala. Vsem tistim, ki se ukvarjajo s kodnimi tabelami in tekstovni podatki v splošnem, pa v branje priporočam sicer staro, vendar pa še vedno zelo relevantno stran http://www.joelonsoftware.com/articles/....
Zgodovina sprememb…
- spremenilo: BlueRunner ()
klemen22 ::
delam po iso 8859-1
Ja pri tem naboru se mi zdi da so notri le: Žž in Šš, medtem ko Ččja!
Unicode pa je
Motiti se je človeško, odpuščati pa božje. Torej ti odpuščam ;)
Zgodovina sprememb…
- spremenil: klemen22 ()
BlueRunner ::
Upam, da sem nasul dovolj informacij, da boš sedaj obvladal večino problemov z kodnimi tabelami pod okni. Za konceptualne težave s standardi in pretvorbami ter lokalizacijo v POSIX kompatiblinih sistemih pa boš moral še sam malo povrtati, če boš to kdaj potreboval. V tolažbo pa to, da komur uspe v celoti razumeti kodne tabele, mu uspe tisto, kar resnično razume le majhen procent informatikov v Sloveniji. Po moji pavšalni oceni pa morebitna "diplomiranost" pri temu na žalost ne igra kakšne posebne vloge, saj tega na naših fakultetah bodisi ne učijo, bodisi večina študentov to temo uspešno prešprica.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Prikaz šumnikov z UTF-8 ?Oddelek: Izdelava spletišč | 9215 (9089) | Person |
» | Kater win player predvaja vse šumnikeOddelek: Programska oprema | 1466 (1383) | markko |
» | Mozzila Firefox problemOddelek: Programska oprema | 2200 (1977) | Likeb |
» | Kako iz windows-1250 v iso-8859-2 ?Oddelek: Izdelava spletišč | 2709 (2451) | tomysux |
» | charset ?Oddelek: Programiranje | 3063 (2899) | cahahopie |