字符编码和使用 Zend\Dom\Query
Character encoding and using Zend\Dom\Query
我在使用 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) 但没有成功。
经过多次尝试设法解决了这个问题,但我认为这不是一个好的解决方案。
我已将适当的 headers 添加到 HTML 文档中
$document = '<!DOCTYPE html>'. //Add
'<html lang="pl">'. //Add
'<head>'. //Add
'<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'. //Add
'<meta http-equiv="content-language" content="pl" />'. //Add
'</head>'. //Add
'<body>'. //Add
'<ul id="test">'.
'<li>ęółąśłżźć</li>'.
'<li>test</li>'.
'</ul>'.
'</body>'. //Add
'</html>'; //Add
效果不错
在幕后 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'));
或者修改元标记或 xml 指定 UTF-8 的声明。
$dom->setDocumentHtml('<meta http-equiv="Content-Type" content="charset=utf-8" />' . $document);
$dom->setDocumentHtml('<?xml encoding="UTF-8">' . $document);
我在使用 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) 但没有成功。
经过多次尝试设法解决了这个问题,但我认为这不是一个好的解决方案。
我已将适当的 headers 添加到 HTML 文档中
$document = '<!DOCTYPE html>'. //Add
'<html lang="pl">'. //Add
'<head>'. //Add
'<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'. //Add
'<meta http-equiv="content-language" content="pl" />'. //Add
'</head>'. //Add
'<body>'. //Add
'<ul id="test">'.
'<li>ęółąśłżźć</li>'.
'<li>test</li>'.
'</ul>'.
'</body>'. //Add
'</html>'; //Add
效果不错
在幕后 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'));
或者修改元标记或 xml 指定 UTF-8 的声明。
$dom->setDocumentHtml('<meta http-equiv="Content-Type" content="charset=utf-8" />' . $document);
$dom->setDocumentHtml('<?xml encoding="UTF-8">' . $document);