【问题标题】:php - read content web page for especial addressphp - 读取特定地址的内容网页
【发布时间】:2015-05-14 21:15:15
【问题描述】:

我想得到这个Web Page的内容 使用 php 函数(例如 file_put_contentscurl_init 等),但我得到 ������� 作为响应。

为什么会这样?

我解决了我的问题。获取内容网页后,我使用 mb_convert_encoding($body_webpage,"UTF-8","GBK") 现在这可以保存在带有中文字符的 mysql 中。

【问题讨论】:

  • 它可能使用的是unicode。
  • 你使用的是哪个file_*或curl_*?显示代码。
  • 检查这个问题,它可能会有所帮助:stackoverflow.com/questions/2236668/…
  • 还活着?!您的问题与错误的字符编码有关,请在下面查看我的答案。
  • 正如 XML 文件头声明的那样,文件被编码为 GB2312。您需要根据需要将其转换为所需的编码。您可能应该将其留给适当的 XML 解析器。

标签: php mysql utf-8 page-curl file-put-contents


【解决方案1】:

为了正确显示中文页面,您需要做几件事。

告诉 PHP 我们使用 UTF-8 字符串直到脚本结束

mb_internal_encoding('UTF-8');

告诉 PHP 我们将向浏览器输出 UTF-8

mb_http_output('UTF-8');

告诉 Bowser 我们将使用 UTF-8 字符集

header('Content-Type: text/xml; charset=UTF-8');


我已使用以下代码成功加载了页面,并使用了正确的字符编码:

<?php
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.chinanews.com/rss/scroll-news.xml");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_ENCODING, "");
$pagebody=curl_exec ($ch);
curl_close ($ch);

header('Content-Type: text/xml; charset=UTF-8');
echo $pagebody;
?>

了解更多关于 utf-8 字符编码的信息

https://phpbestpractices.org/#utf-8

【讨论】:

  • 感谢佩德罗·洛比托。我想用 utf8_general_ci 集合将 $pagebody 存储在 mysql 表中。但是执行插入查询后存储字段为空。我要存储汉字。
  • @hediehloo 添加 MySQL 作为标签,SHOW CREATE TABLE,并告诉我们您使用的是 mysqli 还是 PDO。
  • 这两个mb 函数在这里并没有真正做任何事情。 mb_internal_encoding 只是设置一个其他函数使用的内部值,它本身在这里没有做任何重要的事情。 mb_http_output 是一个输出过滤器,它自动将任何输出从 内部编码 转换为给定的输出编码。因为两者都是 UTF-8,所以什么都不会发生。
猜你喜欢
  • 1970-01-01
  • 2023-04-11
  • 2013-09-04
  • 1970-01-01
  • 2012-07-06
  • 1970-01-01
  • 1970-01-01
  • 2011-10-03
  • 2015-06-01
相关资源
最近更新 更多