用php需要将mysql数据导出到xml。我知道htmlspecialchars
(print/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,据我所知,必须使用其他代码。无论如何似乎可以理解问题在哪里。感谢
答案 0 :(得分:1)
使用mysql_set_charset('utf8')
从db获取UTF-8编码结果。