Edit report at http://bugs.php.net/bug.php?id=41208&edit=1

 ID:                 41208
 Comment by:         r dot spliet at student dot tudelft dot nl
 Reported by:        scott at realorganized dot com
 Summary:            saveXML() fails with iso-8859-1 input
 Status:             Bogus
 Type:               Bug
 Package:            DOM XML related
 Operating System:   Mac OS X, Linux
 PHP Version:        5.2.1
 Assigned To:        rrichards
 Block user comment: N

 New Comment:

I'm suffering from the same "problem", with the exception that my
ISO-8859-1 data comes from MySQL.

Using utf8_encode() does solve the issue, so I would like to turn this
bug into a feature request. It seems a bit odd to me to encode my data
in UTF-8 just to let DOMDocument decode it jiffy's later. I would
personally like DOMDocument to know what type of data I'm presenting it
instead of assuming UTF-8 (which is imho just wrong). Perhaps with a
parameter in createElement, perhaps with an attribute. I'll leave that
to the PHP engineers.


Previous Comments:
------------------------------------------------------------------------
[2007-04-27 09:27:30] rricha...@php.net

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

You need to utf-8 encode/decode data:
utf8_encode(chr(200))/utf-8_decode($data)

------------------------------------------------------------------------
[2007-04-26 23:45:02] tony2...@php.net

Rob, please verify this.

------------------------------------------------------------------------
[2007-04-26 22:17:58] scott at realorganized dot com

change:

$domfather->saveXML()

to:

$domfather->saveXML($node)



in the example code and execute and no echo at all - no error, 

nothing.  It's like it crashed or something.

------------------------------------------------------------------------
[2007-04-26 21:53:54] scott at realorganized dot com

Description:
------------
When using input encoding of charset=iso-8859-1 domDocument() 

fails to output the ascii code 200 (e grave) using saveXML()

Reproduce code:
---------------
Here's some example code that shows the problem:



<?

  header("Content-Type: text/html; charset=iso-8859-1");

  error_reporting(E_ALL);

  $domfather = new domDocument('1.0', 'iso-8859-1');

  $node = $domfather->createElement("xxx", chr(200));

  $domfather->appendChild($node);

  echo "<pre>";

  echo htmlspecialchars($domfather->saveXML());

  $nodelist =  $domfather->getElementsByTagName("xxx");

  $data = $nodelist->item(0)->nodeValue;

  echo $data;

  echo strlen($data);

?>

Expected result:
----------------
I was expecting the saveXML() to output the e grave symbol (ascii 

200)



iso-8859-1 character mapping is here:



http://old.no/charmap/iso-8859-1.html



and shows that ascii is completely valid.



Please notice that the data is provided correctly when I ask for 

it by node.  the failure is just when using the saveXML() 

function.

Actual result:
--------------
The output from my server is below.  When I retrieve 

the node's data back, it is as expected.  But it's the saveXML() 

code that seems to have a problem. I suspect the problem is with 

the utf-8 -> iso-8859 conversion before output.



Warning:  DOMDocument::saveXML() [function.DOMDocument-saveXML]: 

output conversion failed due to conv error in /Library/Tenon/

WebServer/WebSites/realtyjuggler.com/subscription/test.php on line 

23



Warning:  DOMDocument::saveXML() [function.DOMDocument-saveXML]: 

Bytes: 0xC8 0x3C 0x2F 0x78 in /Library/Tenon/WebServer/WebSites/

realtyjuggler.com/subscription/test.php on line 23



<?xml version="1.0" encoding="iso-8859-1"?>

<xxx>È1


------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=41208&edit=1

Reply via email to