1. <i id='zCyzs'><tr id='zCyzs'><dt id='zCyzs'><q id='zCyzs'><span id='zCyzs'><b id='zCyzs'><form id='zCyzs'><ins id='zCyzs'></ins><ul id='zCyzs'></ul><sub id='zCyzs'></sub></form><legend id='zCyzs'></legend><bdo id='zCyzs'><pre id='zCyzs'><center id='zCyzs'></center></pre></bdo></b><th id='zCyzs'></th></span></q></dt></tr></i><div id='zCyzs'><tfoot id='zCyzs'></tfoot><dl id='zCyzs'><fieldset id='zCyzs'></fieldset></dl></div>

        • <bdo id='zCyzs'></bdo><ul id='zCyzs'></ul>

        <tfoot id='zCyzs'></tfoot>
      1. <legend id='zCyzs'><style id='zCyzs'><dir id='zCyzs'><q id='zCyzs'></q></dir></style></legend>

        <small id='zCyzs'></small><noframes id='zCyzs'>

      2. PHP DOMDocument loadHTML 未正确编码 UTF-8

        时间:2023-10-03
          <i id='g2U58'><tr id='g2U58'><dt id='g2U58'><q id='g2U58'><span id='g2U58'><b id='g2U58'><form id='g2U58'><ins id='g2U58'></ins><ul id='g2U58'></ul><sub id='g2U58'></sub></form><legend id='g2U58'></legend><bdo id='g2U58'><pre id='g2U58'><center id='g2U58'></center></pre></bdo></b><th id='g2U58'></th></span></q></dt></tr></i><div id='g2U58'><tfoot id='g2U58'></tfoot><dl id='g2U58'><fieldset id='g2U58'></fieldset></dl></div>
            • <bdo id='g2U58'></bdo><ul id='g2U58'></ul>

                  <tbody id='g2U58'></tbody>

                • <small id='g2U58'></small><noframes id='g2U58'>

                  <tfoot id='g2U58'></tfoot>

                  <legend id='g2U58'><style id='g2U58'><dir id='g2U58'><q id='g2U58'></q></dir></style></legend>
                  本文介绍了PHP DOMDocument loadHTML 未正确编码 UTF-8的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

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

                  I'm trying to parse some HTML using DOMDocument, but when I do, I suddenly lose my encoding (at least that is how it appears to me).

                  $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);
                  }
                  

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

                  The result of this code is that I get a bunch of characters that are not Japanese. However, if I do:

                  echo $profile;
                  

                  显示正确.我试过 saveHTML 和 saveXML,但都不能正确显示.我使用的是 PHP 5.3.

                  it displays correctly. I've tried saveHTML and saveXML, and neither display correctly. I am using PHP 5.3.

                  我所看到的:

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

                  应该显示什么:

                  イリノイ州シカゴにて、アイルランド系の家庭に、9人兄弟の5番目として生まれる。彼を含めて4人が俳優になった。父親は木材のセールスマンで、母親は郵便局の客室係だった。高校時代はキャディのアルバイトに勤しみ、教育資金を受けながらカトリック系の高校へ進学
                  

                  我已将代码简化为五行,以便您可以自行测试.

                  I've simplified the code down to five lines so you can test it yourself.

                  $profile = "<div lang=ja><p>イリノイ州シカゴにて、アイルランド系の家庭に、</p></div>";
                  $dom = new DOMDocument();
                  $dom->loadHTML($profile);
                  echo $dom->saveHTML();
                  echo $profile;
                  

                  这是返回的html:

                  <div lang="ja"><p>イリノイ州シカゴã«ã¦ã€ã‚¢ã‚¤ãƒ«ãƒ©ãƒ³ãƒ‰ç³»ã®å®¶åº­ã«ã€</p></div>
                  <div lang="ja"><p>イリノイ州シカゴにて、アイルランド系の家庭に、</p></div>
                  

                  推荐答案

                  DOMDocument::loadHTML 会将您的字符串视为 ISO-8859-1 中的字符串,除非您另有说明.这会导致 UTF-8 字符串被错误解释.

                  DOMDocument::loadHTML will treat your string as being in ISO-8859-1 unless you tell it otherwise. This results in UTF-8 strings being interpreted incorrectly.

                  如果您的字符串不包含 XML 编码声明,您可以在前面加上一个,使字符串被视为 UTF-8:

                  If your string doesn't contain an XML encoding declaration, you can prepend one to cause the string to be treated as UTF-8:

                  $profile = '<p>イリノイ州シカゴにて、アイルランド系の家庭に、9</p>';
                  $dom = new DOMDocument();
                  $dom->loadHTML('<?xml encoding="utf-8" ?>' . $profile);
                  echo $dom->saveHTML();
                  

                  如果你不知道字符串是否已经包含这样的声明,在 SmartDOMDocument 应该可以帮助您:

                  If you cannot know if the string will contain such a declaration already, there's a workaround in SmartDOMDocument which should help you:

                  $profile = '<p>イリノイ州シカゴにて、アイルランド系の家庭に、9</p>';
                  $dom = new DOMDocument();
                  $dom->loadHTML(mb_convert_encoding($profile, 'HTML-ENTITIES', 'UTF-8'));
                  echo $dom->saveHTML();
                  

                  这不是一个很好的解决方法,但由于并非所有字符都可以在 ISO-8859-1 中表示(如这些武士刀),因此它是最安全的替代方法.

                  This is not a great workaround, but since not all characters can be represented in ISO-8859-1 (like these katana), it's the safest alternative.

                  这篇关于PHP DOMDocument loadHTML 未正确编码 UTF-8的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:如何将 Bootstrap Carousel 图像标题放置在 carousel d 下一篇:如何删除多个 UTF-8 BOM 序列

                  相关文章

                  最新文章

                  <small id='uMVKl'></small><noframes id='uMVKl'>

                  <legend id='uMVKl'><style id='uMVKl'><dir id='uMVKl'><q id='uMVKl'></q></dir></style></legend>

                      <tfoot id='uMVKl'></tfoot>
                      • <bdo id='uMVKl'></bdo><ul id='uMVKl'></ul>
                    1. <i id='uMVKl'><tr id='uMVKl'><dt id='uMVKl'><q id='uMVKl'><span id='uMVKl'><b id='uMVKl'><form id='uMVKl'><ins id='uMVKl'></ins><ul id='uMVKl'></ul><sub id='uMVKl'></sub></form><legend id='uMVKl'></legend><bdo id='uMVKl'><pre id='uMVKl'><center id='uMVKl'></center></pre></bdo></b><th id='uMVKl'></th></span></q></dt></tr></i><div id='uMVKl'><tfoot id='uMVKl'></tfoot><dl id='uMVKl'><fieldset id='uMVKl'></fieldset></dl></div>