PHP将MySQL导出为浏览器中显示为“?”的xml非英文字符

时间:2013-06-29 09:06:52

标签: php mysql xml

用php需要将mysql数据导出到xml。我知道htmlspecialcharsprint/echo的情况);会做那个后者。

现在的问题是如何正确显示非英文字符。

MySQL编码为'UTF-8'。

在MySQL中,非英文字符显示正确。

这是我的代码

header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Cache-Control: no-cache, must-revalidate');
header('Pragma: no-cache');
header('Content-Type: text/xml');

//.... mysql connect, select

$DOM = new DOMDocument('1.0','UTF-8');
$root = $DOM->createElement('корневой');
$DOM->appendChild($root);

while ($row = mysql_fetch_assoc($res)) {
$child11 = $DOM->createElement('вложенный',mb_convert_encoding($row['TransactionPartnerName'], "UTF-8") );
$root->appendChild($child11);
$child_att11 = $DOM->createAttribute('vārds');
$child11->appendChild($child_att11);
$att_text11 = $DOM->createTextNode('Value attribute11');
$child_att11->appendChild($att_text11);
}

echo $DOM->saveXML();

浏览器中的$root = $DOM->createElement('корневой');非英文字符显示正确。

但是此$child11 = $DOM->createElement('вложенный',mb_convert_encoding($row['TransactionPartnerName'], "UTF-8") );显示?而非非英文字符(我的意思是此вложенный正确显示,但不是来自此$row['TransactionPartnerName']的非英文字符获取{{1 }})。

?之前,在IE中获取$child11 = $DOM->createElement('child11',$row['TransactionPartnerName']);

添加An invalid character was found in text content. Error processing resource时没有警告,但显示mb_convert_encoding

试图尝试并保存。更改为?并且test1.xml看起来像这样

$DOM->save("test1.xml");

您看到<?xml version="1.0" encoding="UTF-8"?> <корневой> <вложенный vārds="Value attribute11">AUTOMOTIVE</вложенный> <вложенный vārds="Value attribute11">???????</вложенный> </корневой> ,而MySQL中的???????代替русский

如何正确显示/保存非英文字符?

更新 根据{{​​1}}添加后的建议

?

所有的作品。确定MySQL,但对于PDO,据我所知,必须使用其他代码。无论如何似乎可以理解问题在哪里。感谢

1 个答案:

答案 0 :(得分:1)

使用mysql_set_charset('utf8')从db获取UTF-8编码结果。