[Megoldva] UTF-8 karakterek beolvasása XML fáljból

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

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.

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.