Sziasztok!
Adott egy php kód, amiben az alábbi sor található:
$doc->loadXML(str_replace('&', '&', html_entity_decode($doc->saveXML())));
Ez a sor CentOS 4.4 alatt (Apache 2.0, saját fordítású PHP 5.1.6) rendben lefut, míg ugyanazzal az xml adattal FreeBSD alatt (legfrisebb ports, Apache 2.2, PHP 5.2.1_3) az alábbi hibát adja:
Warning: DOMDocument::loadXML() [function.DOMDocument-loadXML]: Input is not proper UTF-8, indicate
encoding ! Bytes: 0xA0 0x3F 0x3F 0x3F in Entity, line: xx in yyy.php on line zz
Kipróbáltam FreeBSD alatt 5.1.6-os php-val is és szintén előjön a hiba, tehát szerintem nem a PHP verziók közötti különbség lehet a gond.
Van valakinek ötlete, hogy merre induljak el, hol keressem a hiba forrását?
Köszi.
- 2649 megtekintés
Hozzászólások
igy probaltad? (ha tenyleg utf8 a forras)
$doc->loadXML(str_replace('&', '&', html_entity_decode($doc->saveXML(), ENT_QUOTES, 'UTF-8')));
- A hozzászóláshoz be kell jelentkezni
Sajnos így is ugyanaz :(. Linux alatt normálian átmegy ezen mindenféle extra ékezetes, cirill karakter is, tehát elvileg rendes utf8 a cucc.
- A hozzászóláshoz be kell jelentkezni
Meg egy gyors otlet, hatha:
ini_set('iconv.input_encoding', 'UTF-8');
ini_set('iconv.internal_encoding', 'UTF-8');
ini_set('iconv.output_encoding', 'UTF-8');
(es az iconv.so-t engedelyezd az extensions.ini-be)
- A hozzászóláshoz be kell jelentkezni
Én is hasonlóra gyanakodtam, de mind a FreeBSD, mind a CentOS rendszer alatt ISO-8859-1-re van állítva mindegyik. Mellesleg összehasonlítottam a két php.ini-t és nem volt köztük lényeges különbség. Azért köszi a próbálkozást :)
- A hozzászóláshoz be kell jelentkezni
"mind a FreeBSD, mind a CentOS rendszer alatt ISO-8859-1-re van állítva mindegyik"
Sztem akkor itt lesz a bibi. Gyorsan teszteltem es ez a kod nalam hiba nelkul fut (FreeBSD 6.2-RELEASE):
$doc = new DOMDocument('1.0', 'UTF-8');
$root = $doc->appendChild( $doc->createElement('root') );
$node = $root->appendChild( $doc->createElement('node') );
$text = $node->appendChild( $doc->createTextNode('ű & ő') );
$doc->loadXML(str_replace('&', '&', html_entity_decode($doc->saveXML(), ENT_QUOTES, 'UTF-8')));
print $doc->saveXML();
"Azért köszi a próbálkozást :)"
ma epp raerek :)
- A hozzászóláshoz be kell jelentkezni
"Sztem akkor itt lesz a bibi."
CentOS alatt is ISO-8859-1-re van beállítva és ott múködik. Az error_level mire van nálad állítva? Ez nálam ugyananzt a warning-ot adja, és lecseréli az ékezeteket kalapra.
- A hozzászóláshoz be kell jelentkezni
E_ALL|E_STRICT
- A hozzászóláshoz be kell jelentkezni
pwm köszi a segítséget. Megvan a hiba: FreeBSD latin2 volt a PHP mögött lévő MySQL default charset-je. Újrafordítottam utf8-cal és így jó. Én kérek elnézést, hogy kötöttem az ebet a karóhoz, hogy proper utf8 volt az xml, mert nem volt az.
- A hozzászóláshoz be kell jelentkezni