PHP SimpleXML产生一些未知的编码

时间:2011-12-08 03:24:30

标签: php simplexml

当我执行下面的代码时,

mysql_connect("localhost", "user", "pass") or die("Could not connect: " . mysql_error());
mysql_select_db("database");
mysql_query ("set character_set_results='utf8'");
$result = mysql_query("SELECT xxx");

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
  $str = $row[0];
  echo $str;
}

如果我查看来源(中文字,UTF-8编码如下),我收​​到以下信息,

LS23A300BS(23”LED顯示器)/ LS22A300BS(21.5”LED顯示器)

但是,当我添加代码以将SQL结果转换为XML文件时,如下所示

$dom = new domDocument;
$dom->formatOutput = true;

$root = $dom->appendChild($dom->createElement( "items" ));
$sxe = simplexml_import_dom($dom);

mysql_connect("localhost", "user", "pass") or die("Could not connect: " . mysql_error());
mysql_select_db("database");
mysql_query ("set character_set_results='utf8'");
$result = mysql_query("SELECT xxx");

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
  $item = $sxe->addChild("item");
  $str = $row[0];  
  $item->addChild("desc", $str);
}

echo $sxe->asXML();

mysql_free_result($result);

如果我检查了来源(未知编码如下),我收​​到了以下信息,

LS23A300BS(23”LED顯示器)/ LS22A300BS(21.5”LED顯示器)

我想问,
未知编码的类型是什么?
如何将此未知编码更改回UTF-8?

由于

1 个答案:

答案 0 :(得分:1)

要尝试两件事:

  1. 使用mysql_query('SET NAMES utf8');代替character_set_results。这为UTF8设置了一些关键的MySQL设置。
  2. 您没有声明DOMDocument的编码。尝试使用它作为构造函数:new DOMDocument('1.0', 'UTF-8')
  3. 这是暂且的:你根本不需要DOMDocument。试试$sxe = simplexml_load_string('<?xml version="1.0" encoding="utf-8"?><items/>');