Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对文档php编码的字符错误_Php_Character Encoding_Domdocument - Fatal编程技术网

对文档php编码的字符错误

对文档php编码的字符错误,php,character-encoding,domdocument,Php,Character Encoding,Domdocument,我有一些html内容,它的所有文本都是波斯语! 我想通过方法DOMDocument::loadHTML($html)将此内容交给DOMDocument来做一些事情,然后通过DOMDocument::saveHTML()将其返回。。。但在显示字符时存在一个问题:-( 例如,“سلام”更改为“ØÙاÙÙ…”,甚至我也将脚本文件编码更改为UTF-8,但它不起作用 <?php $html = "<html><meta charset='utf-8' /> سلام<

我有一些html内容,它的所有文本都是波斯语! 我想通过方法DOMDocument::loadHTML($html)将此内容交给DOMDocument来做一些事情,然后通过DOMDocument::saveHTML()将其返回。。。但在显示字符时存在一个问题:-( 例如,“سلام”更改为“ØÙاÙÙ…”,甚至我也将脚本文件编码更改为UTF-8,但它不起作用

<?php
$html = "<html><meta charset='utf-8' /> سلام</html>";

$doc = new DOMDocument('1.0', 'utf-8');
$doc->loadHTML($html);
print $html; // output : سلام
print $doc->saveHTML(); // output : سلام
print $doc->saveHTML($doc->documentElement); // output : سÙاÙ
?>

告诉XML解析器正在读取的数据是UTF-8编码的:

<?php

// original input (unknown encoding)
$html = '<html>سلام</html>';

$doc = new DOMDocument();

// specify the input encoding
$doc->loadHTML('<?xml encoding="utf-8"?>' . $html);

// specify the output encoding
$doc->encoding = 'utf-8';

// output: <html><body><p>سلام</p></body></html>
print $doc->saveHTML($doc->documentElement);
编码='utf-8';
//输出:

打印$doc->saveHTML($doc->documentElement);
然后定义DOM编码本身(之前的定义是用于输入):

如果您没有使用libxml 2.7.7(从PHP>=5.4.0开始),请删除前导和尾随的
&
标记:

$doc->normalizeDocument();//删除前导和尾随标记(&T)
打印$doc->saveHTML($doc->documentElement);

玩得开心!

HTML内容是UTF8吗?当你使用
创建…
函数时,你从哪里获得
$HTML
呢?你需要确保你在每个组件上都使用UTF8,特别是如果你使用数据库,你需要将表中的数据设置为UTF8,并将数据库api设置为使用UTF8发送数据谢谢,不是吗我更新了我的问题并添加了一个代码…此代码没有任何内容!!在对其进行任何操作之前,您是否尝试过打印
$html
?这可能会有帮助:[PHP-DomDocument-saveHTML未正确编码日语][1][1]:
$html = '<html>سلام</html>';
$doc = new DOMDocument();
$doc->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'), LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$doc->encoding = 'UTF-8';
$doc->normalizeDocument(); //Remove leading and trailing <html> & <body> tags
print $doc->saveHTML($doc->documentElement);