gpt4 book ai didi

php - 字符编码和使用 Zend\Dom\Query

转载 作者:可可西里 更新时间:2023-11-01 00:58:55 25 4
gpt4 key购买 nike

我在使用 Zend Framework 2 对波兰语字符进行编码时遇到问题。我使用:

use Zend\Dom\Query;

休息码:

$dom = new Query(); 
$document = '<ul id="test"><li>ęółąśłżźć</li><li>test</li></ul>';
$dom->setDocumentHtml($document);
$dom->setEncoding('utf-8');
$ul = $dom->execute('#test li');
foreach($ul as $li)
{
echo $li->nodeValue;
}

结果:

ÄóÅÄÅÅżźÄtest

enter image description here

如何正确显示这些字符?

我尝试使用 PHP 函数(iconv、utf8_encode)但没有成功。

最佳答案

在底层 Zend\Dom\Query 使用 DOMDocument它建立在 libxml 之上,其 HTML 解析器是为 HTML 4 制作的。其默认编码为 ISO-8859-1。

Query::setEncoding() 不会影响文档的加载方式。


解决方法:

第一次使用mb_convert_encoding将 ASCII 范围以上的任何内容转换为其等效的 html 实体。

$dom->setDocumentHtml(mb_convert_encoding($document, 'HTML-ENTITIES', 'UTF-8'));

或者修改指定 UTF-8 的元标记或 xml 声明。

$dom->setDocumentHtml('<meta http-equiv="Content-Type" content="charset=utf-8" />' . $document);
$dom->setDocumentHtml('<?xml encoding="UTF-8">' . $document);

关于php - 字符编码和使用 Zend\Dom\Query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33133455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com