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)
- 2271 megtekintés
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.
- A hozzászóláshoz be kell jelentkezni
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)
- A hozzászóláshoz be kell jelentkezni
Értem.
Csak az a fura hogy a gedit mindíg jól felismeri az efféle kódolást, és mindíg ISO-8859-15 jön ki neki. Tökéletes megjelennek az ŐŰ betűk. Viszont ha egy UTF8-ban megnyitott fájlt ISO-8859-15-ben menteni akarok, akkor megmakacsolja magát.
- A hozzászóláshoz be kell jelentkezni
ISO-8859-15-ben NEM jelenhetnek meg tökéletesen az Ő-Ű betűk... az Ő tetején ~, az Ű tetején ^ van ˝ helyett.
Ha geditben ezeket nem így látod, az vagy bug vagy feature, mindenesetre elég problémás.
- A hozzászóláshoz be kell jelentkezni
A cp1250 és az iso8859-2 a "C3 95" hexa kódú karaktert nem ismeri fel pedig csak egy Õ
- A hozzászóláshoz be kell jelentkezni
Most akkor az Ő-t vagy az Õ-t (hullámos) nem ismeri fel?
Ha az Õ (hullámos) hiányzik, akkor az nem meglepő, mert ilyen nincs a cp1250-ben.
A hullámos Õ-t, a konverzió előtt, cseréld le rendes Ő-re.
- A hozzászóláshoz be kell jelentkezni
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 :(
- A hozzászóláshoz be kell jelentkezni
nem értem, miért kell közös kódlap? miért nem lehet egyszerűen konverzió előtt (vagy után) egy tr-en keresztülnyomni (vagy programban ezzel ekvivalensen)?
- A hozzászóláshoz be kell jelentkezni
De lehet. Most csak bebizonyítottam, hogy ennélkül tényleg nem lehet. :)
- A hozzászóláshoz be kell jelentkezni
Sőt olyan windows-os kódlap sincs amiben az Õ és a kínai írásjelek együtt szerepelnek. De mit kell ezen bizonyítani?
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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 hozzászóláshoz be kell jelentkezni
Szerintem nem.
A Google vegyesen használja a hullámos, és ékezetes változatot. Pont erről szól a "bizonyításom".
Inkább szerintem a szótárában vannak elírások.
- A hozzászóláshoz be kell jelentkezni
Ez egyértelmű. Azt hittem valami valódi problémát vetettél fel..........
(a nyitó postban magyar ékezetes, nem hullámos Ő volt)
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni
Módosítottam a kérdést. Valóban nem volt egyértelmű, mert megkövetletem a tökéletességet, mert feltételeztem hogy bizonyos esetekben lehet ilyen. Azt nem akartam mondani hogy mindíg tökéletesen, csak amikor lehet.
- A hozzászóláshoz be kell jelentkezni
+1
Milyen nyelven íródott a szöveg? Mert ha magyar, akkor abban nincs Õ, tehát cserélni kell. Ez vonatkozik a kisbetűs változatra is.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
(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) :)
- A hozzászóláshoz be kell jelentkezni
Néztem a tr-t is, de én sem jöttem rá hogyan lehetne karakterpárt cserélni vele.
Köszi a tippeket, ha lesz valami komolyabb feladat, remélem eszembe jut majd.
- A hozzászóláshoz be kell jelentkezni
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...
- A hozzászóláshoz be kell jelentkezni
Ez komoly! :)
- A hozzászóláshoz be kell jelentkezni