[英]UTF-8 encoded characters show as gibberish in PHP
我正在尝试打印从 URL 获取的特定URL
文档的所有<p>
元素。 HTML 文档使用 UTF-8 编码。
这是我的代码:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
header('Content-Type: text/plain; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
$url = "https://www.sangbadpratidin.in/kolkata/ispat-express-met-an-accident-near-howrah-junction/#.Y7qC6YFeT80.whatsapp";
$user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36";
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL,$url);
$html=curl_exec($ch);
if (!curl_errno($ch)) {
$resultStatus = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($resultStatus == 200) {
@$DOM = new DOMDocument;
@$DOM->loadHTML($html);
$bodies = $DOM->getElementsByTagName('p');
foreach($bodies as $body){
$para = $body->nodeValue;
echo $para;
}
}
}
?>
HTML 文档充满了孟加拉语字符,当我尝试打印这些值时,打印出来的是:
সà§à¦¬à§à¦°à¦¤ বি ¦°à§à¦à¦à¦¨à¦¾à¦° à¦à¦¬à¦²à§ à¦à§à...
为什么我收不到原文? 请帮我
编辑:我刚刚测试了它,是的,这修复了它:) 在https 上看到它://dh.ratma.net/test/test2.php
DOMDocument 的已知问题没有意识到它的 UTF-8,并且默认使用一些可怕的 windows-1252 编码,并继续破坏实际的 UTF-8 多字节字符。 运气好的话,替换
@$DOM->loadHTML($html);
和
@$DOM->loadHTML('<?xml encoding="UTF-8">' . $html);
应该修复它。
将$DOM->loadHTML($html)
更改为$DOM->loadHTML(mb_convert_encoding($html, "HTML-ENTITIES", "UTF-8"))
似乎可以解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.