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
- 6761 megtekintés
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
- A hozzászóláshoz be kell jelentkezni
- 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.
- A hozzászóláshoz be kell jelentkezni
Az XML_Decoders alól:
Available decoders
Currently, the decoder using libiconv is available. It has two distinct implementations. The first one, in xmliconv.pas unit, uses the existing iconvenc package and supports Linux, FreeBSD and Darwin targets. The second one, in xmliconv_windows.pas unit, is for Windows targets. It links to the native-build iconv.dll that you should distribute with the application.
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.
- A hozzászóláshoz be kell jelentkezni
-
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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 hozzászóláshoz be kell jelentkezni
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!
- A hozzászóláshoz be kell jelentkezni