Fórumok
Sziasztok!
XML fájlból szeretnék UTF-8 kódolású adatokat beolvasni. Linuxon minden oké, de Windows XP-n már más a helyzet: a beolvasott adatokban az ékezetes karakterek helyén kérdőjelek szerepelnek. Egy biztos, nem a megjelenítéssel van a baj. A mellékelt link végén levő fájlban van egy mintaprogram forráskóddal és képernyőmentéssel.
Az interneten keresgéltem rá gyógyírt, de csak annyit tudtam meg, hogy már másnak is volt ilyen problémája.
Rendszer: Windows XP Home, Lazarus 0.9.28-2, Freepascal 2.2.4-3
Mintaprogram: http://web.t-online.hu/miklosij/other/read_utf8_xml.zip
Hozzászólások
Előrebocsájtom, hogy nem értek a Lazarus (FreePascal?)-hoz.
De ezt találtam :
http://wiki.freepascal.org/XML_Tutorial
Itt, lent az Encoding résznél van ez :
http://wiki.freepascal.org/XML_Decoders
És ezt írja : As of version 0.9.26 of Lazarus, there is an encoding property in a TXMLDocument,but it is ignored
- Amit elfelejtettem, hogy Linux alatt normálisan működik.
- Igen van ilyen, beállíthatom 'utf8'-ra de semmi nem változik. Valószínűleg ez az alapértelmezett értéke.
Az XML_Decoders alól:
Nem lehet, hogy amikor windows-on futtatod, akkor a fenti kritériumnak nem felel meg a környezet? (Nem a megfelelő unit-ot használod, vagy nincs alatta a dll.)
Szerk.: locale beállítások azonosak? Hátha befolyásolja.
-
Nem ismerem a free pascalt, de hátha ez ad valami kiinduló pontot. Tomcat/java alatt meg kell adni egy "környezeti" változót (-Dfile.encoding=UTF-8), ami azt adja meg, hogy az OS milyen file-encodingot használ. Ebből a szempontból az XML headerben levő encoding nem számít, mert hiába utf-8 az értéke, ha a környezeti változóé latin2.
0xEF,0xBB,0xBF -vel megprobalhatod kezdeni a filet. Ez az UTF-8 BOM, winek hasznaljak. (Egyebkent nem ajanlott hasznalni)
Amit nem lehet megirni assemblyben, azt nem lehet megirni.
A hiba megoldódott: Windows-on használni kell az UTF8Encode() függvényt. Linuxon nyilván azért nem volt szükséges az alkalmazása, mert ott UTF-8 az alapértelmezett karakterkódolás.
Köszönöm mindenkinek a segítséget!