我在使用 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
如何正确显示这些字符?
我尝试使用 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/