用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']
get的非英文字符?
)。
之前有$child11 = $DOM->createElement('child11',$row['TransactionPartnerName']);
进An invalid character was found in text content. Error processing resource
过IE。
添加时mb_convert_encoding
没有警告,但显示?
.
尝试实验并保存。改为$DOM->save("test1.xml");
和 test1.xml 看起来像这样
<?xml version="1.0" encoding="UTF-8"?>
<корневой>
<вложенный vārds="Value attribute11">AUTOMOTIVE</вложенный>
<вложенный vārds="Value attribute11">???????</вложенный>
</корневой>
你看???????
MySQL 中的 andрусский
不是这些?
.
任何想法如何正确显示/保存非英文字符?
更新
后根据建议mysql_connect
添加
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET COLLATION_CONNECTION = 'utf8_unicode_ci'");
和所有的作品。可以使用 MySQL,但对于我理解的 PDO 必须使用其他代码。无论如何似乎可以理解问题出在哪里。谢谢