【问题标题】:PHP DOMDocument won't parse XML string as UTF-8PHP DOMDocument 不会将 XML 字符串解析为 UTF-8
【发布时间】:2013-08-12 19:22:11
【问题描述】:

我正在尝试将 xml 格式的字符串解析为 DOMDocument。以下是我的代码:

mysql_connect("localhost", "MYUSERNAME", "MYPASSWORD") or die(mysql_error());
mysql_select_db("cmj_db") or die(mysql_error());

$data = mysql_query("SELECT article_id, html_data from articles where article_id=".$_GET["article_id"]) or die(mysql_error());
$dataArray = mysql_fetch_array($data);
echo 'article: ' . $dataArray['article_id'] . '<br />';

$doc = new DOMDocument;
$doc->loadXML(Encoding::toUTF8($dataArray['html_data']));

我收到错误:警告:DOMDocument::loadXML(): Input is not proper UTF-8,指示编码!字节数:0x96 0x20 0x6E 0x6F

涉及特殊字符,所以我需要 UTF 编码。当我自己回显字符串时,字符看起来很好。注意到这是一连串的转换可能会有所帮助。我从 html 编码中转义了很多字符,然后将其导入 mysql 表(使用 utf-9 字符集)。如何将此字符串转换为 unicode,以便将其解析为 XML?

谢谢

【问题讨论】:

  • 你需要知道表中的数据是不是UTF-8,mysql_connect()的连接的编码是什么。如果它已经是 UTF-8,您可能会通过 Encoding::toUTF8 对其进行多次转码

标签: php mysql xml unicode


【解决方案1】:

您是否尝试过 mb_convert_encoding()? mb_convert_encoding()

如果我理解正确,您的 XML 编码是 UTF-9,而您需要 UTF-8?

mb_convert_encoding($dataArray['html_data'], 'UTF-8', 'UTF-9')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 2012-07-03
    • 2011-01-21
    • 2012-11-07
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多