[VFP] UTF-16 XML uitlezen

Pagina: 1
Acties:
  • 314 views sinds 30-01-2008
  • Reageer

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
Hoi,

ik probeer in Visual Foxpro een XML file uit te lezen die gecodeerd is volgens UTF-16... daar kan ik helaas weinig aan doen, zo krijg ik de bestanden binnen.... echter als ik de ingelezen file bekijk, krijg ik na ieder karakter een raar teken... op zich is dat niet zo raar... dat verwacht ik ook... maar dat wil ik niet :)... ik wil een gewone mooie XML file...

Hexadecimaal bekeken krijg ik dit:
code:
1
2
3
FF FE 3C 00 3F 00 78 00 6D 00 6C 00 20 00 76 00
65 00 72 00 73 00 69 00 6F 00 6E 00 3D 00 22 00
etcetera


zoals je ziet, een 00 na ieder karakter...

Weet iemand een manier om de XML file correct uit te lezen of te converteren? Heb de helpfiles al geraadpleegd en google biedt ook geen soelaas... ik had gehoopt dat APPEND MEMO met de juiste parameters de oplossing zou zijn... maar ik kan nergens vinden welke nCodePage waarde ik dan zou moeten gebruiken... hetzelfde geldt voor STRCONV... iemand enig idee?

  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
Zo te zien is het UTF-16 Little Endian (te zien aan FF FE, de zogenaamde byte-order mark), daarbij is dus 3C 00 gelijk aan 00 3C in big endian. Overigens heeft Visual Foxpro bij mijn weten geen ondersteuning voor UTF-16, alleen voor UTF-8.

Bedenk ook dat UTF-16 altijd 16 bit (of 32 bit) is, het karakter is dus niet 3C, maar 3C 00 (of wel 00 3C als je most significant byte als eerste neemt (big endian)).

Zie ook http://en.wikipedia.org/wiki/UTF-16 en http://en.wikipedia.org/wiki/Byte_Order_Mark

[ Voor 43% gewijzigd door Remus op 22-03-2007 17:07 ]


  • Scoutertje
  • Registratie: Juli 2004
  • Laatst online: 01-12 14:00
Kijk in de Help van FoxPro voor de zekerheid even bij het commando CURSORTOXML en XMLTOCURSOR.

> However, to make XML more compliant for Web browsers that can interpret UTF-8, you can
> optionally set the encoding attribute to UTF-8 instead of Windows-1252. The result set undergoes
> translation to UTF-8 characters only when you set nFlags to 48 (specify the encoding attribute as
> UTF-8 and translate character data to UTF-8 format). This is required only when the data actually
> contains double-byte characters. You do not have to use character translation, STRCONV ( ), for
> example, if you are outputting only Latin (single byte) characters.

En verder misschien:

commando ISLEADBYTE()
en http://weblogs.foxite.com...hive/2007/03/12/3439.aspx

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
dank, ga ik dinsdag gelijk doen...