Karakter káosz

Fórumok

Biztos lerágott csont téma ez már, de újra felhozom, mert nem értem. Miért van az, hogy a Suse a Windowsos Fat32 partíción lévő fájlokat hibásan jeleníti meg? Á, Í, Ú, stb. betűk helyett összevissza szimbólumok? Tudom, karakterkódolás, stb. De segítsetek már hogy értsem, akkor most milyen karakterkódolást használ a Suse, és milyet a Windows? Miért nem látják rendesen egymást? És hogyan kell ezt megoldani hogy jó legyen? Csak azok válaszoljanak akik tényleg ráérnek csevegni erről, tudom már milliószor volt erről írva, de nekem már nincs kedvem keresgélni ezután.

Hozzászólások

tényleg a legegyszerűbb megoldást mondom:ne használj ékezetet a file,ill a foldereknél:)
Amúgy szerintem iso8859-2 kódolást használ...win meg ha jól tudom valami cp1259...

Ha nem jó iso8859-2-vel, akkor lehet, hogy utf-8-as file-nevid vannak, próbálgasd az opciókat. A default locale egyébként mi nálad? Az összevissza jelek-betűk egyébként arra utalnak, hogy utf-8 lesz - 8 bites kódolás 7 bitesként "megjelenítve" az ékezetes karaktereket két "összevissza jel-betű"-ként szokta mutatni.

Az iocharset=... csatolási opcióval kell megadnod a Unix (Suse) karakterkészletét, például iso8859-2 vagy utf8. Külön gratula a Susénak ha ezt nem bírta beállítani alapból jóra :-)

A Windows karakterkészlete terén felejtsd el a sok doscharset meg cp... zöldséget amit a többiek mondanak, ez a DOS fájlrendszerekre (és a Windows fájlrendszereken kompatibilitási okokból megtalálható DOS fájlnevekre, melyeket a Linux nem használ, talán kivétel ha olyan kretén vagy, hogy FAT-ként csatolnálnád) vonatkoznak.

A Windows fájlnevek egy adott fix rögzített kódolással szerepelnek (speciel UTF-16, fene tudja milyen endian sorrendben), ez a kódolás nem ascii-kompatibilis, így egy az egyben semmiképpen nem lehetne Linux alatt használni, a kernel tehát ténytelen konvertálni, más lehetősége nincs. A konverzió egyik végpontja mindenképpen UTF-16, ezt nincs lehetőség másra átállítani, de nem is lehet rá szükség, mert ez így jó. A konverzió másik végpontja pedig az, amit az iocharset mount-opcióval megadsz.

Itt tehát nemcsak implementációbeli különbség, hanem komoly szemléletbeli különbség is van a két oprendszer között. A Linux szemléletvilága szerint a fájlnév byte-ok sorozata, tehát pusztán a szintaxist definiálja, a szemantikát (értelmezést, jelentést) nem, a fájlnév helyes megjelenítése tehát az alkalmazásokra hárul bármiféle segítség vagy használható információ nélkül, így nem is csoda, ha sok alkalmazásnak ez nem sikerül. A Windows rögzíti a kötelezően használandó karakterkészletet, ezáltal szintaxist és szemantikát definiál egyszerre, és ennek köszönhetően egy jól megírt alkalmazás számára nem dilemma hogy hogyan kell a fájlneveket megjeleníteni, nem kell jó és rossz közt dönteniük, gyerekjáték jól megjeleníteni.

"Az iocharset=... csatolási opcióval kell megadnod a Unix (Suse) karakterkészletét, például iso8859-2 vagy utf8. Külön gratula a Susénak ha ezt nem bírta beállítani alapból jóra
..."

Azért ez nem ilyen egyszerű...
Attól is függ, hogy milyen kódolásban kerültek a fájlok a partícióra.
Egy W9x esetében nem jó az utf8, és pl XP-nél nem jó az iso8859-2...
Legalábbis én sok esetben tapasztaltam ezt.
Azaz nem feltétlenül lehet alapból jóra beállítani szvsz.
_______________________
Magyar égre, magyar UFO-t!

> Azért ez nem ilyen egyszerű...
> Attól is függ, hogy milyen kódolásban kerültek a fájlok a partícióra.
> Egy W9x esetében nem jó az utf8, és pl XP-nél nem jó az iso8859-2...

Kérlek olvasd el még egyszer és próbáld is megérteni amit írtam. Ha jól tudom, akkor W95-től (talán SP2)-től kezdve a Windows partícióján _mindenképpen_ UTF-16 kódolásban állnak a fájlnevek. Más lehetőség nincs, sem iso8859-2, sem utf8, sem semmi más.

Persze elképzelhető, hogy egyszer Linux alól hibás iocharset opcióval csatoltad, és ilyenkor téves ékezetes fájlnevek másodódtak rá, de az akkor egy korábbi hiba, amire maximum tüneti kezelés tud lenni egy tök másmilyen karakterkészlet megnevezése, és ez esetben tutkó hogy Windows alatt sem látszanak jól a fájlnevek. Ez esetben a helyes teendő nem workaroundokkal szórakozni, hanem a Windows partícióján megjavítani az ékezetes fájlneveket, oly módon, hogy azok onnan kezdve Windows és Linux alatt is jól látszódjanak. Ez _kizárólag_ oly módon érhető el végeredményben, ha iocharset-ként a Linux alatt futó alkalmazások karakterkészletet nevezed meg.

Én elolvashatom soxor is, de az biztos, hogy volt egy halom (kb.100db)
HDD-m, amin adatmegsemmisítést csináltam, régi kiszuperált gépekből, az fix, hogy csak iso8859-2-vel látszottak az ékezetes fájlok W95-98-as HDD-ken rendesen. Utf8-al nem volt jó, az is biztos. Viszont XP-ken meg utf8 kell, mert ott meg nem ment 8859-2-vel...
Az is biztos, hogy "tutkóra" jól látszottak az ékezetes karakterek az eredeti oprendszerek alatt.
Én elhiszek neked mindent, ha akarod, de nem hiszem, hogy egy feltelepített W9x-en az összes ékezetes karakterekkel baj lenne mert azt csak észrevenné a gazdája, ha évekig használta. Márpedig csupa ilyen HDD volt nálam, ha hiszed, ha nem... Egyébként az ékezetes karakterek másképp jelentek meg a különböző iocharset beállításoknál, 3-4-et próbáltam, (8859-2, utf8, 8859-1, és cp1250) természetesen, de fura dolog azért, hogy ugyanazon a linuxon mint írtam, a Windows más verzióihoz más iocharset kell. Nem vagyok a témában perfekt, de az XP-vel valamit kavartak sztem.
De ne mondd azt, hogy elnézhettem valamit, mert volt vele tapasztalatom és esetem sok.
_______________________
Magyar égre, magyar UFO-t!

Hmm... Erdekes, amit allitasz -- mivel egmont-nak tokeletesen igaza van. A kernel azt feltetelezi, hogy a vfat nevek utf16 kodolasuak, azaz 2byte/ch... Az iocharset-ben azt adod meg, hogy az utf16-ot, milyen 8bites charset-re forditsa, azaz pl. a hosszu o' utf16 kodja mi legyen a VFS-ben (a kepernyodon)... pl. latin-2-nek megfelelo, vagy 852-nek megfelelo... Tehat, ha a konzolod latin2 es utf8-at mondasz, vagy viszont, akkor zavarosak lesznek a filenevek, fuggetlenul attol, hogy mi volt a win alatt.

Zsiraf

p.s.: megegyszer az iocharset a te oldaladon levo karakterkodolast mutatja. A filerendszeren az utf16 miatt minden egyertelmu...

p.s: nem veletlenul a codepage opciora utalsz? Ugyanis a 8.3 nevek nem utf16-ban kodolodnak, hanem valamely 8 bites codepage alapjan. Tehat, ha vegyesen vannak 8.3 ill. long neveid ekezetes karakterekkel, akkor az siman lehet, hogy a hosszu nevekben jo a rovidekben zavaros az ekezetes betuk megjelenitese, es forditva, ami win9x/XP viszonylataban valtozhat...

Még annyi, hogy emlékeim szerint "iocharset=iso8859-2" és "iocharset=utf8" a pontos szintaxis (de lehet hogy rosszul emlékszem) és baromira érzékeny a kötőjelekre meg ilyesmire, próbálj berakni ide-oda, kivenni, stb... Úgy dereng, hogy az "utf8" kötőjel nélkül írandó. És könnyen lehet hogy a betűméretre is érzékeny a kernel.

Ha mar kaosznal tartunk nekem is lenne egy kis gondom:
eddig pre7-es mplayer-t hasznaltam, minden oks volt, de amiota pre8-as hasznalok nem jok a nagy magyar ekezetes betuk a feliratban. fontok fent vannak, es a font kodilas is be van allitva iso 8859-2-re. a feliratot kwrite-ban megnezve iso 8859-2 -ben jok a betuk.
pre 7-ben minden oks volt.