【问题标题】:php XML DOM translates special chars to &#xYY;php XML DOM 将特殊字符转换为 &#xYY;
【发布时间】:2011-06-05 05:46:30
【问题描述】:

我用 AJAX POST 发送这个:

<li><ul class   "zone zCentral ui-sortable"><li><ul class="region rCol3 ui-sortable"><li class="" style=""><div><span class="tc tc_video">574081</span> <span>video: 'Mundo.Hoy': ¿Dónde habré olvidado... mi memoria?</span></div></li></ul></li></ul></li>

我这样做是为了创建 XML:

        header('Content-type: text/html; charset=utf-8');       
    if(isset($_POST) && isset($_POST['data']))
    {           
        $data = '<ul id="zone_container" class="ui-sortable">';
        $data .= $_POST['data'];
        $data .= '</ul>';                           

        $dom = new DOMDocument('1.0', 'utf-8');
        $dom->loadXML($data);

        echo $dom->saveXML();                       
        exit();
    }

我明白了:

<?xml version="1.0"?>
<ul id="zone_container" class="ui-sortable">
    <li><ul class="zone zCentral ui-sortable"><li><ul class="region rCol3         ui-sortable"><li class="" style=""><div><span class="tc tc_video">574081</span>     <span>video: 'Mundo.Hoy': &#xBF;D&#xF3;nde habr&#xE9; olvidado... mi memoria?</span></div>    </li></ul></li></ul></li></ul>

¿Dónde habré olvidado...我的记忆?

翻译为:

&#xBF;D&#xF3;nde habr&#xE9 ; olvidado... mi memoria?

我需要 XML 中的原始字符,这些是 utf-8 有效的,我不知道这种编码的原因:(

【问题讨论】:

标签: php xml hex htmlspecialchars


【解决方案1】:

我解决了这个问题:

        header('Content-type: text/html; charset=utf-8');       
    if(isset($_POST) && isset($_POST['data']))
    {           
        $data = '<?xml version="1.0" encoding="utf-8"?>';
        $data .= '<ul id="zone_container" class="ui-sortable">';
        $data .= $_POST['data'];
        $data .= '</ul>';                   

        $dom = new DOMDocument('1.0', 'utf-8');
        $dom->loadXML($data);

        echo $dom->saveXML();                       
        exit();

添加:

            $data = '<?xml version="1.0" encoding="utf-8"?>';

以 XML 开头

感谢回复:)

【讨论】:

    【解决方案2】:

    解决此问题的最简单方法是在加载 XML 之后设置编码类型:

    $dom = new DOMDocument();
    $dom->loadXML($data);
    $dom->encoding = 'utf-8';
    
    echo $dom->saveXML();                       
    exit();
    

    您还可以通过在数据开头放置 XML 声明来解决此问题:

    $data = '<?xml version="1.0" encoding="utf-8"?>' . $data;
    $dom = new DOMDocument();
    $dom->loadXML($data);
    
    echo $dom->saveXML();
    exit();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-24
      • 2017-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-09
      • 1970-01-01
      • 2013-03-08
      相关资源
      最近更新 更多