[XML + PHP] xmlparser kapt alles voor speciale tekens af

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi,

ik zit met volgend probleem:

ik heb een XML file die iso-8859-1 ge-encode is
ik wil de data van de xml in een mysql database steken en maak hiervoor een xml parser in php.
Bij de endElementHandler van deze parser doe ik dan de insert in de database.

Ik gebruik PHP5 dus de encoding van de XML-file wordt automatisch gedetecteerd. Ik maak dus zo mijn parser aan:
PHP:
1
2
3
4
    $xml_parser = xml_parser_create();
    xml_parser_set_option($xml_parser, XML_OPTION_TARGET_ENCODING, "UTF-8");
    xml_parser_set_option($xml_parser,XML_OPTION_SKIP_WHITE,1); 
    xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, FALSE);


Dit gaat allemaal goed, totdat er een ë of ä of een ander speciaal karakter geparsed wordt. Dit speciaal karakter komt er wel goed uit maar alles wat ervoor staat, is er afgekapt.
Als er in de XML-file 'xxxxäyyyy' staat komt het eruit als 'äyyyy'.

Weet iemand hoe dit komt? Ik heb me al suf liggen zoeken...
thx

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Mag ik even een kickje doen?

Acties:
  • 0 Henk 'm!

  • Possstema
  • Registratie: Juli 2002
  • Laatst online: 07-04 11:50
Ik heb niet echt een oplossing voor je probleem maar is het ook een idee om naar de simpleXML functies te kijken van PHP 5. Die gebruik ik altijd ( wanneer php 5 mogelijk ). En werkt perfect voor mij.

Edit:
Moet je nog wel even een htmlspecialchars(utf8_decode($variabele), ENT_QUOTES) doen voordat je een uitgelezen string in je DB stopt.

Voor simpleXML zie: http://nl3.php.net/manual/nl/ref.simplexml.php

offtopic:
BTW, is het ook een idee dat je GoT niet alleen als vraagbaak gebruikt, maar ook kijkt of je anderen kan helpen? ( http://gathering.tweakers...find/poster/138552/topics )

[ Voor 56% gewijzigd door Possstema op 22-05-2006 19:16 ]


Acties:
  • 0 Henk 'm!

  • toost
  • Registratie: Januari 2002
  • Laatst online: 30-01 03:23
ik heb gisteren in een ander topic met zelfde onderwerp een oplossing gegeven. Daarvoor zit er een zoekfunctie op GOT, gebruik die voor je je topic open.

maar om het je makkelijk te maken moet je met twee dingen rekening houden:

php veranderd de speciale tekens niet.

Je moet zorgen dat je xmlfile en mysql dbase kunnen werken met deze speciale tekens.

Dus

Bij mysql staat je veld collatie op utf8_unicode_ci staat ipv latin1_swedish_ci

en voor xml:

Vergeet het stukje encoding niet in je xml file.
<?xml version="1.0" encoding="utf-8"?>

Als je dit doet zal je probleem waarschijnlijk verholpen zijn

This space for rent. Serious inquiries only please.