UTF8-ból WINDOWS CP-re(MEGOLDVA)

Fórumok

Sziasztok!

Az iconv programmal próbálok ékezetes UTF8 szöveget átrakni windows-ra. A gond az hogy ha próbálgatom a kódlapokat, mindíg hiányzik valami.Mert mondjuk hullámos a karakter, ami nincs a magyar kódlapokban.

Van-e valami tool ami autómatikusan felismeri hogy egy UTF8 szöveget milyen iconv által ismert kódlapra lehet hibátlanul átrakni? Vagy ha nem lehet, akkor számszerüsítve kiírja a lehetőségeket.(Pl két lehetőséged van, vagy CP1250, be vagy CP1252-be kódolsz, az egyik esetben 26 hiba lesz, a másik esetben 85)

Hozzászólások

Ez engem is érdekelne, mert én is szívok ezzel.
Nekem csak úgy sikerült megoldani, hogy megjelenítek egy dialógus ablakot
ahol ki lehet választani a forrás kódolását, mint az oocalc-ban.

UTF-8 nem alakítható maradéktalanul cp12xx vagy ISO 8859-xx kódlapokra, és nem csak akkor ha mondjuk szanszkrit vagy kínai jeleket tartalmaz.

Az 1 byte-os kódlapokból sok központozási jel (pl. hosszú kötőjel, alsó " - ezekre billentyű sincs, most nem keresem ki hogyan hozható elő) is hiányzik, ezeket előtte ki kell keresni és átalakítani kompatíbilisre.

Ha magyar szövegről van szó, nincs túl sok lehetőséged, csak az iso8859-2 és a cp1250 kódlapokkal próbálkozz, ha ezekkel is rossz a kimenet, jön a gányolás (pl. UTF-8 fileban Ő -> O", aztán átalakítás, és a kész fileban O" -> Ő).

UI:
segédprogramot nem ismerek, annyira nem nehéz megoldani, csak nem mindig hoz jó eredményt:
Készítesz egy listát, a UTF-8 melyik tartományai melyik nemzeti karakterkészletben vannak, majd statisztikát csinálsz hogy a szövegben melyik tartományból mennyi karakter van, és kiválasztod a legjobban ráillőt... aztán a kódolhatatlan karakterekkel azt csinálsz amit nem szégyellsz :p
(ilyen módszer esetén az angol ABC betűit érdemes kivenni a keresésből, mert "rontják" a statisztikát)

Közban már én is rájöttem a probléma forrására. Köszi.
Ez itt a hullámos ő:
http://www.eki.ee/letter/chardata.cgi?utf8c=C3+95
Ez meg a hosszú ű:
http://www.eki.ee/letter/chardata.cgi?utf8c=C5+B1

Mind a kettő szerepel a szövegeben, és mint az az oldalon látszik is, az egyetlen közös kódlapjuk a CENTEURO. Ezt viszont nem találom az iconv-ben ,és valószínüleg nem egy ismert kódlap.

Amúgy ez egy nagyon állat karakter adatbázis oldal: http://www.eki.ee/letter/
Csak manuálisan kell csinálni a felismerést :(

Persze.
Most nem értem mit kell ezen fennakadni.
Csak azt hogy a google translate kimentét nem lehet cserélgetés nélkül feldolgozni, tehát ezentúl tudni fogom hogy mire számítsak.

UI:

Mert az engem egyáltalán nem érdekel hogy hullámos vagy sima ő, viszont ha a google a magyar fordításban hullámos ő-t használ ami nem köthető egy konkrét magyar kódlaphoz, akkor valószínüsíthető, hogy nem figyeltek erre oda, és más ilyen hibák is vannak.

Valószínűleg azért használ ír hullámosat, mert 1 byte-os kódolást (ISO 8859-xx) használ a fordítás valamelyik fázisában, ez esetben pedig a két betű kódja azonos... a kimenetben pedig nem figyeltek rá hogy a magyar szöveget 1 byte-os kódolás esetén ISO 8859-2-ként kéne megjeleníteni.

A post elsősorban elméleti kérdést vetett fel, hogy van-e autómatikus felismerő program, amihez nem kell hexa kódokat másolgatni a böngészóbe. Akkor még nem is tudatosult bennem, hogy mi a probléma. A konkrét problémát már megoldottam, viszont az elméleti kérdés még maradt.

Van-e valami tool ami autómatikusan felismeri hogy egy UTF8 szöveget milyen iconv által ismert kódlapra lehet hibátlanul átrakni?

Ez az elméleti kérdés?

Erre az a válasz hogy 100% hibátlan konverzió nem létezik, ld feljebb amit írtam.
UTF-8ban olyan karaktereket is használhatsz ami máshol nincs; illetve kevert írásrendszerek esetén nehéz automatikusan eldönteni, melyik kódlapot használva van a legkisebb információveszteség, illetve milyen félmegoldással lehetne ha nem is jól, de legalább olvashatóan átültetni.
pl. ha megfelelően használt hullámos és "sima" ő is van - mondjuk külföldi személynév magyar szövegben - mit csináltatnál a programmal? Ez egyszerűbb, a szokás hogy az ékezet nélküli változatot használják a problémás betűből. Na de egy japán vagy kínai felirattal (cégnév, vagy történelmi szövegben valami) mit kezdenél?

Ha esetleg találkoznátok ezzel a hibával,kis-nagy hosszú ő és ű betűk javítása:


cat input | sed "s/\xC3\x95/\xC5\x90/g" | sed "s/\xC3\xB5/\xC5\x91/g" | sed "s/\xC3\x9B/\xC5\xB0/g" | sed "s/\xC3\xBB/\xC5\xB1/g" > output

Sajnos ez nem csak a google translate-et érinti, hanem a gedit-et is. Sok helyen előjön.

(magán vélemény: nem olyan jó csövezni, télen hideg van, nyáron a haverok büdösek, és munkát sem lehet ennyi pipéval találni ;)

sednek van "-e" vagy ";" sőt tud input-ot olvasni macska nélkül is, de a tr sokkal hatékonyabb lenne erre (bár unikód karakterek cseréjére most nem tudom rá lehet-e venni) :)

recode-val próbálkoztál már? akár c függvényt is generál neked, azt meg kijavíthatod, ha úgy tetszik...