Home  >  Article  >  Backend Development  >  PHP读取数据库中记录生成XML时,记录中有中文怎么办

PHP读取数据库中记录生成XML时,记录中有中文怎么办

WBOY
WBOYOriginal
2016-06-23 14:15:07749browse

我希望用PHP的DOM函数生成XML文档,如果文档中有中文就出错,即使用CDATA包含中文也没用,代码如下:
 require('conn.php');
$owen1='学生工作';
header('Content-type:text/xml');
$result=$conn->query("select * from news where BigClassName='$owen1' limit 4");

if ($result)

$dom = new DOMDocument('1.0','UTF-8');
$dom->formatOutput=true;
$rcs = $dom->createElement("rss");

 
while ($row=$result->fetch_assoc()){
//print_r($arr); 
$rc = $dom->createElement("channel");
    $mydate=$dom->createElement("title");
    $myname = $dom->createElement("link");
   
    $mydescription=$dom->createElement("description");
 $myhp=$dom->createElement("item");
 $date=$row['title'];
    $datetext = $dom->createTextNode('');
    $mydate->appendChild($datetext);
    $nametext=$dom->createTextNode($name);
    $myname->appendChild($nametext);
    $hptext=$dom->createTextNode($hp);
    $myhp->appendChild($hptext);
    $descriptiontext=$dom->createTextNode($description);
    $mydescription->appendChild($descriptiontext);
    $rcs->appendChild($rc);
    $rc->appendChild($mydate);
    $rc->appendChild($myname);
    $rc->appendChild($myhp);
    $rc->appendChild($mydescription);


  $dom->appendChild($rcs);
     echo $dom->saveXML();     


执行,就提示在最新动态这遇到不合格式的字符,要怎么改啊


回复讨论(解决方案)

补充下,我这个PHP文件编码是gb2312的

写入 XML 的要用 utf-8 编码的数据
两个方案:
1、在你的代码中就从数据库中读出的数据都用 iconv 函数转码
$date = iconv('gbk', utf-8', $row['title']);
$datetext = $dom->createTextNode(iconv('gbk', utf-8', ''));
其他类同

2、直接从数据库中读取 utf-8 编码的数据
$conn->query("set nemes utf8");
$owen1 = iconv('gbk', utf-8', '学生工作');
其他都不变

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:PHP 中的“新”字Next article:如何停止php执行