相关疑难解决方法(0)

PHP DOMDocument loadHTML没有正确编码UTF-8

我正在尝试使用DOMDocument解析一些HTML,但是当我这样做时,我突然失去了编码(至少这对我来说是这样).

$profile = "<div><p>various japanese characters</p></div>";
$dom = new DOMDocument();
$dom->loadHTML($profile); 

$divs = $dom->getElementsByTagName('div');

foreach ($divs as $div) {
    echo $dom->saveHTML($div);
}
Run Code Online (Sandbox Code Playgroud)

这段代码的结果是我得到了一堆不是日语的字符.但是,如果我这样做:

echo $profile;
Run Code Online (Sandbox Code Playgroud)

它显示正确.我尝试过saveHTML和saveXML,但都没有正确显示.我使用的是PHP 5.3.

我所看到的:

ã¤ãªãã¤å·ã·ã«ã´ã«ã¦ãã¢ã¤ã«ã©ã³ãç³»ã®å®¶åº­ã«ã9人åå¼ã®5çªç®ã¨ãã¦çã¾ãããå½¼ãå«ãã¦4人ã俳åªã«ãªã£ããç¶è¦ªã¯æ¨æã®ã»ã¼ã«ã¹ãã³ã§ãæ¯è¦ªã¯éµä¾¿å±ã®å®¢å®¤ä¿ã ã£ãã髿 ¡æä»£ã¯ã­ã£ãã£ã®ã¢ã«ãã¤ãã«å¤ãã¿ãæè²è³éãåããªããã«ããªãã¯ç³»ã®é«æ ¡ã¸é²å­¦ã
Run Code Online (Sandbox Code Playgroud)

应该展示什么:

???????????????????????9????5???????????????4???????????????????????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

编辑:我已将代码简化为五行,以便您自己测试.

$profile = "<div lang=ja><p>???????????????????????</p></div>";
$dom = new DOMDocument();
$dom->loadHTML($profile);
echo $dom->saveHTML();
echo $profile;
Run Code Online (Sandbox Code Playgroud)

这是返回的html:

<div lang="ja"><p>イリノイ州シカゴã«ã¦ã€ã‚¢ã‚¤ãƒ«ãƒ©ãƒ³ãƒ‰ç³»ã®å®¶åº­ã«ã€</p></div>
<div lang="ja"><p>???????????????????????</p></div>
Run Code Online (Sandbox Code Playgroud)

php utf-8 character-encoding

174
推荐指数
8
解决办法
9万
查看次数

php XML DOM将特殊字符转换为&#xYY;

我用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>
Run Code Online (Sandbox Code Playgroud)

我这样做是为了创建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();
    }
Run Code Online (Sandbox Code Playgroud)

我得到这个:

<?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>
Run Code Online (Sandbox Code Playgroud)

¿Dóndehabréolvidado... mi memoria?

翻译为:

&#xBF;D&#xF3;nde …
Run Code Online (Sandbox Code Playgroud)

php xml hex htmlspecialchars

3
推荐指数
1
解决办法
1718
查看次数

标签 统计

php ×2

character-encoding ×1

hex ×1

htmlspecialchars ×1

utf-8 ×1

xml ×1