SORU
21 Kasım 2011, PAZARTESİ


PHP DOMDocument UTF-8 kodlaması loadHTML doğru değil

Bazı HTML DOMDocument kullanarak ayrıştırmak için çalışıyorum, ama bunu yaparken, birden benim kodlama (en azından bana göründüğü gibidir) kaybeder.

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

Bu kod sonucu Japon olmayan karakterler bir grup olsun. Eğer yaparsam ancak:

echo $profile;

doğru görüntüler. SaveHTML ve saveXML denedim, ve de doğru görüntüler. PHP 5.3 kullanıyorum.

Ne görüyorum:

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

Gösterilen ne olmalıdır:

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

EDİT: aşağı beş satır kendiniz test edebilirsiniz kod basitleştirilmiş ettik.

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

Burada döndürülen html:

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

CEVAP
21 Kasım 2011, PAZARTESİ


DOMDocument::loadHTML başka türlü söylemek sürece-8859-1, ISO biri olarak dize tedavi edecektir. Bu UTF-8 dizeleri yanlış yorumlanmış olur. Size yardımcı olacaktır: SmartDOMDocument geçici bir çözüm var

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

Alternatif bir belge zaten içermeyen UTF-8, sağlanan olarak dize tedavi etmek için XML kodlama bildirimi ile HTML önüne

$dom->loadHTML('<?xml encoding="utf-8" ?>' . $profile);

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Austin Evans

    Austin Evans

    5 AĞUSTOS 2007
  • psidot

    psidot

    2 Kasım 2006
  • TechSmartt

    TechSmartt

    29 Aralık 2010