utf8 kontra unicode - na most mit lépjek

 ( tovis | 2008. április 26., szombat - 12:34 )

Adva van egy Linux kommunikációs program csomag. Benne SMS küldés/fogadás, GPRS terminál szerver stb. Mindezek szépen kommunikáltak egy másik csapat windows programmal - magyarul, amig HU-hu local volt a módi. Jött a Debian Etch és azt mondta, legyen az alapértelmezett locale utf8. Klassz, ez biztos jó dolog lessz! Hát nem, az összesékezetes üzenet ami a Linux felől jön az valami két karakteres katyvasz! Mi az ördögöt csináljak? Térjek vissza a HU_hu locale -hoz, és felejtsem el a unicode -ot, vagy van valami ami képes ezt átkonvertálni?
A következő döbbenet akkor az SQL -nél lesznek, ott mekkora lessz a zűr :[
Küzdött már valaki a problémával?

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Valami miatt 1 byte-os (ISO 8859-x / ANSI 125x) kódolásra számít. Lehet a magyar nyelvi beállítás zavar be neki (láttam már hogy lustaságból nem állították át utf-8-ra csak az angolt).
en_US.UTF-8 beállítással is ilyen?

Ezt hogy tudom megnézni?
A locale csak valami "LC_..." cuccokat dob ki, és az mind hu_HU.UTF8

* Én egy indián vagyok. Minden indián hazudik.

LC_ALL=en_US.UTF-8
sorral egészítsd ki a /etc/environment filet, majd jelentkezz ki/be újra (akkor állítja be az itt szereplő változókat)

ill. ki/bejelentkezés nélkül: export LC_ALL=en_US.UTF-8
(emellett természetesen a /etc/environment módosítása is szükséges)


It doesn't matter if you like my song as long as you can hear me sing

Jó:(
Utána nézegettem. Le kell szögezni, hogy az igazi megoldás valóban az utf lessz - akár tetszik akár nem. De, most nincs időm, hogy minden cucomal áttérjek a wchar stringekre - ez így most annyit jelentene hogy mindent szinte újra kellene írni - pl. sms pdu konverzók.
Vissza az egész, bármennyire is előre mutató :(

* Én egy indián vagyok. Minden indián hazudik.

Nokia telefonok csinálják azt, hogyha beírsz egy olyan ékezetes karaktert, ami nincs bene az alapértelmezett kódlapjában, akkor észrevétlenül átvált utf8-ra és hirtelen fele annyi karakter fér bele egy SMS-be. Aztán keresgélni kell, hogy melyik ékezetes betűt töröljem.

Hát igen a wchar-ra átírás az egy alapos átgyúrással jár.

Üdv,
Dw.
"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."

Sajna egyenlőre nem kapok SMS -ben kanjio sz9vegeket (sde még oroszt sem), hogy ez valójában gondot okozna. Kicsit alábecsültema a dolog súlyát.

* Én egy indián vagyok. Minden indián hazudik.

off:

Az UCS-2-t használja a nokia (is) unicode sms-ek küldésére, ami tényleg 2B/karakter. Az UTF-8 változó hosszúságú karakterkódolás, és magyar szövegre szinte soha nem lesz kétszer hosszabb mint az ISO 8859-2.

off:

Emiatt használok nokia telefonon magyar menürendszer mellett angol beviteli nyelvet. Így ha "á"-t akarok írni, akkor a 2-es gombnál nem úgy jönnek a betűk, hogy aábc, hanem abc, majd egy csomó olyan karakter, amiből ki tudok választani egy á-nak látszó karaktert. Így elmegy normál sms-ként.

annyira nem bonyolult, ha nincs benne ascii-magia
amig nem migralsz, addig meg igy inditsd a programot:
LC_ALL="C" application

adatbazis belso kodolasa gyakorlatilag fuggetlen a rendszer locale-jatol (max defaultot onnan veszi).

a windows (NT) meg a 90es evek eleje ota unicode ready :)

--
Segmentation violation -- Core dumped blues

Az lehet hogy az NT unicode ready, de nem az én programom :(
Egy-két tucat üzenetről van szó, no meg az sms -ek amit egy kis C program bontogat ki a pdu -ból. (egyszer már áttértem a szöveges sms módra de akkor is mindenféle kódolási zűr támadt, az akkori WaveCom modulok nem tudják ezt korrektül, ékezetekkel).
Mindegy, ahhoz hogy a unicode minden körülmények között működjön -t kellene írnom kb. két tucat programot - erre most sincs időm, és nem fizeti meg senki, még nem merült fel mint igény!

* Én egy indián vagyok. Minden indián hazudik.

Az iconv tud konvertálni karaktertáblák között. Ha kihasználják a teljes magyar táblát sms-ben, akkor az unicode, amit csak ISO-8859-2-be vagy UTF-8-ba tudsz konvertálni, mert ebben megtalálhatóak a magyar ékezetes betük is. Nem lehet hogy UTF-8-ban olvasod írod az unicode-ot???
Ha viszont csak 7bit-es karakterkódolásst alakítja át, akkor az lehet bármi. GPRS terminál milyen karakterkódolással adja/fogadja a szöveget?

A pdu -t használok, nem szöveget.
Ez egyébként csak példának szántam - nem biztos hogy a legjobb. Midnenestre amíg a windows -os oldal iso 8859-2 vár addig nem érdemes áttérnem az utf8 -ra vagy előbb ott kellene ezt megtenni! Ott meg csak akkor lenne értelme ha több nyelvet kellene támogatnom - nem igen kell.

* Én egy indián vagyok. Minden indián hazudik.

En a kerdest nagyon egyszeruen oldottam meg, a program maga stabilan latin2 keszletre kodol PDU-bol, befele pedig nincsenek az ekezetek kezelve (mivel angol nyelvu szovegforrasaim vannak, megtehetem, hogy a nem ASCII karaktereket eldobom, es helyere a GSM szabvany szerinti '?'-et kodolom).
Egyebkent nem feltetlen kell wchar-kent kezelni oket, linuxon ha jol tudom a char tipus 2 byte-s nem 1 (3 sor kideriteni...), windowson meg minden stringkezelo cucc fel van keszitve unicode stringek kezelesere asszem.