php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #31994 output conversion failed due to conv error
Submitted: 2005-02-16 10:06 UTC Modified: 2005-04-17 01:00 UTC
Votes:38
Avg. Score:4.1 ± 1.0
Reproduced:31 of 32 (96.9%)
Same Version:10 (32.3%)
Same OS:5 (16.1%)
From: misnet at hotmail dot com Assigned:
Status: No Feedback Package: XSLT related
PHP Version: 5CVS-2005-02-25 OS: windows 2003 server
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: misnet at hotmail dot com
New email:
PHP Version: OS:

 

 [2005-02-16 10:06 UTC] misnet at hotmail dot com
Description:
------------
a.xml
=============================================
<?xml version="1.0" encoding="GB2312"?>
<Article>
  <Title>test</Title>
  <Author>ehero</Author>
  <ComeFrom>?ะน?</ComeFrom>
  <HtmlUrl>a.html</HtmlUrl>
  <CatalogId>2</CatalogId>
  <Contents><![CDATA[????]]></Contents>
  <AddTime>2005??</AddTime>
  <UpdateTime></UpdateTime>
  <Hits>3</Hits>
  <ServerFile></ServerFile>
  <LocalFile></LocalFile>
  <EncodeLocalFile></EncodeLocalFile>
  <PageIndex>0</PageIndex>
  <TotalPageNum>1</TotalPageNum>
  <PageUrl>a.shtml</PageUrl>
</Article>
=============================================
cms.xsl:
=============================================
<?xml version="1.0" encoding="GB2312" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl" xsl:extension-element-prefixes="php">
<xsl:output method="html" encoding="GB2312" indent="yes"/>
<xsl:template match="/">
<html>
.....
=============================================
s.php:
=============================================
<?php
$xml = new DOMDocument("1.0","GB2312");
$xml->load("a.xml");
$xsl = new DOMDocument("1.0","GB2312");
$xsl->load("cms.xsl");
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl);
$proc->registerPHPFunctions();
$d = $proc->transformToUri($xml,"s.xml");
?>
=============================================
When I run s.php, it will be wrong!.Below is the exception messages.

Warning: output conversion failed due to conv error in D:\myphp\yibo\t.php on line 9

Warning: Bytes: 0xB5 0xEB 0x2D 0x3C in D:\myphp\yibo\t.php on line 9

I have tested $xml->load("a.xml") and $xsl->load("cms.xsl"),they are right. I can get $xml->saveXML() and $xsl->saveXML().


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-02-25 14:38 UTC] sniper@php.net
Please try using this CVS snapshot:

  http://snaps.php.net/php5-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5-win32-latest.zip


 [2005-02-26 06:41 UTC] misnet at hotmail dot com
Not be resolved! The same result.
 [2005-03-28 04:43 UTC] misnet at hotmail dot com
What about the bug? Can it not be resolved?
 [2005-04-07 11:43 UTC] emil at wayers dot com
This error/problem resolves around your used encoding type. when using encoding="GB2312" in php5.0.4/cvs-current the engine will issue a warning at the exact point a charcter has been found which isn't suitable for this encoding context.

My script, which is similar to the given script, issued the exact same warning on a character (?) when using the standard iso encoding. After I changed my encoding to UTF-8 all reported problems where gone.

I'm sure this isn't a real engine f*ck up but just a misguided error message ;) But if this workaround doesn't work for you try changing your Article->ComeFrom & Article->Contents & Article->AddTime content into htmlentities.

good luck!
 [2005-04-09 08:27 UTC] cbdbs at yahoo dot com
$doc = new DOMDocument('1.0','ISO-8859-1');
// we want a nice output
$doc->formatOutput = true;


$familias = $doc->appendChild(new DOMElement('familias'));

 while ($fam_datos = mysql_fetch_array($data)){

		$familia = $familias->appendChild(new DOMElement('familia'));
		$familia->appendChild(new DOMElement('Apellidos', $fam_datos['Familia']));
		$familia->appendChild(new DOMElement('Representante', $fam_datos['Apellidos']));
 		$familia->appendChild(new DOMElement('Nombre', $fam_datos['Nombres']));
 		$familia->appendChild(new DOMElement('Edad', $fam_datos['Edad']));
		$familia->appendChild(new DOMElement('Salud', 'Sano'));

 }

header('Content-Type: text/xml');
$documento = $doc->saveXML();
echo $documento;

OUTPUT
<b>Warning</b>:  output conversion failed due to conv error in <b>c:\home\prueba\www\grid\xml.php</b>...
 [2005-04-09 17:34 UTC] derick@php.net
You're probably using a character which can not be represented in iso-8859-1... but I don't know for sure as I don't have the data. Come up with a *self-contained* script that does not rely on a database...
 [2005-04-17 01:00 UTC] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
 [2007-04-26 21:40 UTC] scott at realorganized dot com
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);
?>

Character code 200 is an e grave and is a valid iso-8859-1 
character.  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
 [2007-05-20 17:02 UTC] bonsite at hotmail dot com
This is not a PHP error. You must use utf8_encode() when you use characters like ?, ?, ...
 [2012-11-26 16:46 UTC] michal dot vrchota at gmail dot com
Check if You are not using binary unsafe functions. I was calling substr() instead 
of mb_substr() which broke the utf8 encoding.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Dec 27 07:01:28 2024 UTC