网页中的编码问题,编码转换问题,以及file_get_contents

PJ85718DM与PIC18F4550的本地及远程双路测温系统设计 温度采集是嵌入式系统与暖通控制中的基础环节,如何将传感器读数转换为稳定可靠的数据是关键。数字温度传感器内置ADC与数字接口,简化了模拟链路设计,而多通道架构可同时监测本地板卡与远端探头。PIC18F4550作为主控,通过I2C读取PJ85718DM,结合滑动滤波和阈值报警,实现精准测温;配合RS485或USB实现远程上报,适用于嵌入式设备监控与HVAC风管温度采集。内容涵盖硬件连接、固件实现与现场调试,提供完整工程路径。 阅读详情

最近遇到了很多关于编码的问题。总结一下,记录在此。

1.  

 $PageCode=curl_file_get_contents("http://www.12306.cn");
 echo $PageCode;

我的页面编码全是utf-8,看到铁道部的源文件编码方式也是utf-8(实际上是www.12306.cn/mormhweb/index.html的编码方式是utf-8,因为铁道部的首页跳转到了此页。),所以不用进行编码转换。

但结果输出总是乱码。原来铁道部的网站首页进行了跳转,下面是铁道部的首页的源码:

<html>
<head>
<title>
铁路客户服务中心
</title>
<head>
<script lang="JAVASCRIPT">
var url = location.host;
if(url=="www.12306.cn")
{
	window.location="/mormhweb/";
}
else
{

	if(url=="wap.12306.cn")
	{
		window.location="/mormhwap/";
	}
	else
	{
		alert("非法的地址,浏览器将关闭!");
		window.close();
	}
}


</script>
</html> 


首页的页面编码方式实际上是GBK,是我经过测试才知道的。在它的首页源文件中是看不到编码方式的。

最开始我是用

  

 if(preg_match("/charset=gb2312\"/",strtolower($PageCode))==1)
            $PageCode=mb_convert_encoding($PageCode,"UTF-8","gb2312");
      if(preg_match("/charset=gbk\"/",strtolower($PageCode))==1)
            $PageCode=mb_convert_encoding($PageCode,"UTF-8","gbk");

来进行编码判断并转换的,但有少数页面根本不行。因为页面上没有charset=gbk之类的,所以得通过其他方式进行编码判断。
下面有种方法可以直接判断字符串的编码是否为utf-8:

function is_utf8($liehuo_net) 
{ 
if (preg_match("/^([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}/",$liehuo_net) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}$/",$liehuo_net) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){2,}/",$liehuo_net) == true) 
{ 
return true; 
} 
else 
{ 
return false; 
}
}


于是可以这样进行编码判断并转换:

if(is_utf8($PageCode)!=1) 
{ 
$PageCode=mb_convert_encoding($PageCode,"UTF-8","GBK");
}

另外,在测试过程中,我把上面$PageCode=mb_convert_encoding($PageCode,"UTF-8","GBK");这句话改成$PageCode = iconv("UTF-8","gbk",$PageCode); 
结果是乱码。虽然iconv的执行效率比mb_convert_encoding高,但是通用性和稳定性没有mb_convert_encoding好,所以牺牲一点效率,来换取更稳定的效果。

2. 

$PageCode=file_get_contents("http://www.sohu.com");
$PageCode=mb_convert_encoding($PageCode,"UTF-8","GBK");
echo $PageCode;

因为搜狐的编码是GBK,而我的页面编码是utf-8,所以要进行编码转换。但结果还是乱码!我用各种编码方式来转换结果都是乱码。伤透了我的心。
后来在网上看到别人自己写了个类似linux下面的curl的函数:
function curl_file_get_contents($durl){
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $durl);
  curl_setopt($ch, CURLOPT_TIMEOUT, 5);
  curl_setopt($ch, CURLOPT_USERAGENT, _USERAGENT_);
  curl_setopt($ch, CURLOPT_REFERER,_REFERER_);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  $r = curl_exec($ch);
  curl_close($ch);
  return $r;
}


于是我用这个函数试了一下$PageCode=curl_file_get_contents("http://www.sohu.com");,结果OK!
让我很不明白的是,为什么用php的函数file_get_contents得到的搜狐的首页源文件编码总是有问题呢?而用curl方式得到的就木有问题?
问题算是解决了,但是有些地方还不是很明白,不知道是怎么回事,权且先记下来,以后再慢慢深究。


保姆级教程:手把手配置AutoSar诊断复位(Dcm 0x11服务联动BswM/EcuM) 本文提供AutoSar诊断复位(Dcm 0x11服务联动BswM/EcuM)的保姆级配置教程,详细讲解从诊断服务基础配置到BswM规则引擎搭建、服务端口映射及EcuM复位执行的完整流程。通过Vector配置工具的实际截图和代码片段,帮助开发者高效实现远程复位功能,并分享调试技巧与性能优化实践。 阅读详情

相关推荐

ZYNQ 系统的IEEE1588 实现方法

zynq IEEE588/PTP 实现方案(讨论稿)

姚家湾博客 1万+

[转]PHP中使用file_get_contents()抓取网页乱码的问题

ntent=iconv("GBK","UTF- 8",$content), (1)$htmlsource = iconv("gb2312", "utf-8//IGNORE",$htmlsource); (2)用mb_convert_encoding( $string, 'UTF-8', 'UTF-8,GBK,GB2312,BIG5' ); 转换编码   二,开了gzip的 如何抓取开了gzip的页面,如何判断页面开了

gxl_ct001的专栏 388

Duplicate Cleaner Pro 5.16 保姆级教程:如何用哈希值精准清理重复文件(附音频/视频模式详解)

本文详细介绍了Duplicate Cleaner Pro 5.16如何利用哈希值技术精准清理重复文件,特别针对音频、视频和图片等多媒体文件提供了专业解决方案。通过哈希算法比对和多媒体特征识别,帮助用户高效管理存储空间,提升文件整理效率。

weixin_27032989的博客 564

cURL和file_get_contents实现模拟post请求

以前面试时候,面试官问过我后端有没有跨域问题,但是不敢肯定,现在可以肯定的说没有。 不文用php的cURL和file_get_contents方法分别实现后端跨域。本文场景也是在tp5下实现的。 一,利用cURL实现 1)前端代码,这是一个页面,访问的路径为http://app.write.com/thinkphp/public/index.php/index/index/curl,模块in...

weixin_30691871的博客 238

基准电压 + 运放 + 低边MOS恒流源控制原理

因为恒流源强制 Iout不变,而 Vin​ 增加时,负载压降 Iout⋅Rload不变,多余的电压只能由MOS管的 VDS承担,因此 VDS必然增加。在饱和区,MOS 管的 ID 仅由 VGS决定,与 VDS 无关,这样,负载变化时,VDS可自由调整以维持 Iout恒定。当 Vin​ 小到无法满足 VDS>VGS−Vth时,MOS管进入线性区,Iout 会随 Vin​ 下降而减小,恒流失效。由于 Vref和 Rsense未变,Iout无需调整,运放无需动作,OUT保持不变,Iout恒定。

weixin_50643237的博客 2652

【人工智能】RAG如何根据实际需求选择和进行文档解析(如 PDF、Word、TXT、网页等)?

文档解析的核心在于根据解析目标、文档类型和处理量选择合适工具。PDF、Word、TXT和网页各有特性:PDF需区分可编辑与扫描版,Word需处理结构化内容,TXT简单但需注意编码,网页需应对动态内容。解析场景包括提取纯文本、结构化数据、保留格式和批量处理。非技术用户可借助工具如Adobe Acrobat、WPS和在线OCR,技术用户可通过编程实现自动化。通用流程为:明确目标、分析文档属性、选择工具并测试优化。核心是“工具适配需求”,无需追求万能方案。

奶爸的编程之路,也就一周冷个三天 504

php正则采集网页数据,PHP网页数据正则采集

$url ="https://********";$contents = file_get_contents($url); //抓取页面数据//如果出现中文乱码使用下面代码//$getcontent = iconv("gb2312", "utf-8",$contents);preg_match(‘/[0-9]{1,2}.[0-9]{4}/‘,$contents,$source_worth);//正...

weixin_35828992的博客 474

Altair HyperWorks软件二次开发:二次开发成果展示与报告撰写

HyperMesh Python API允许用户通过Python脚本控制HyperMesh的大部分功能,包括模型创建、修改和分析。它提供了丰富的函数库,可以处理节点、元素、材料属性、载荷和边界条件等。二次开发可以用于创建自定义工具,这些工具可以集成到HyperWorks中,提供特定的功能或简化复杂的操作。

kkchenjj的博客 1639

php 读取远程源码,获取远程服务器网站源文件二种方法-PHP源码

function getsourcecode($q){return @file_get_contents($q);}//用curl获取网站源文件function c_getpagecode($c_url,$p_i=0){$user_agent = "mozilla/4.0";$proxy[0] = "http://211.155.231.208:80"; //浙江省杭州市 电信idc机房$prox...

weixin_39778214的博客 428

Windows Server 2016远程桌面服务配置和授权激活

Server 2016默认远程桌面连接数是2个用户,如果多余两个用户进行远程桌面连接时,系统就会提示超过连接数,可以通过添加远程桌面授权解决:1、添加远程桌面授权服务第一步:服务器管理 - 添加角色和功能打开添加角色和功能向导窗口,选择基于角色或给予功能安装:第二步:添加远程桌面会话主机和远程桌面授权功能:以上配置完成后即可使用多于2用户同时登陆,但使用期限为120天,再次登陆会有如下提示:2、添...

mahailiang的专栏 6万+

YOLO26涨点改进| TGRS 2026 | 独家创新首发、注意力改进篇| 引入LCGA局部曲率引导注意力,保持局部稳定性的同时突出关键几何区域,含多种创新改进,促进YOLO26所有任务高效涨点

🔥本文提出LCGA(局部曲率引导注意力)模块,通过引入曲率信息改进YOLO26网络模型。LCGA在局部窗口内利用深度卷积构造曲率代理,调制标准窗口注意力,使模型更关注道路、边界等曲线型结构,提升遥感图像超分辨率中的几何保真度。相比普通注意力,LCGA能精准聚焦关键几何区域,减少边缘断裂和轮廓偏移,同时保持较低计算开销。实验表明LCGA显著提升性能,在UCMerced数据集上PSNR提升0.2148dB。文章提供了三种改进方案。

Ai缝合怪、助力小伙伴高效发论文 226

PHP获取网页源码全攻略:file_get_contents使用详解与技巧

在网络开发中,获取网页源码是一项基础且常见的需求,无论是数据采集、内容分析还是自动化测试,都需要掌握这一技能。PHP作为一门广泛应用于服务器端的脚本语言

2501_94209058的博客 395

CATIA文件的网页预览方案

CATIA是工业设计中广泛使用的专业软件,产出`.CATPart`或 `.CATProduct`等文件类型,当资产数量较大时,我们希望快捷预览这些文件,就有了`CATPart`文件网页预览的需求 但我们知道,网页上无法直接渲染`CATPart`这种复杂的文件, CATIA生成的文件(如 `CATPart` 和 `CATProduct`)不仅包含三维几何信息(例如点、线和曲面),还涵盖了丰富的元数据与专业设计特征。 那有没有办法,能实现CATIA文件在网页上的便捷预览?

weixin_44211633的博客 1447

php判断是否为GBK编码并转换为utf8

通常网站有两种编码gbk和utf8,那么当我们获取网站内容后,有可能导致编码不同意而发生乱码。今天在网络上找到了解决办法,并测试通过。 $url_content= file_get_contents($_POST['url']); if(json_encode($url_content) == 'null') {

不是专家的专栏 6352

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

php采集网页标题图片,PHP获取网页标题的3种实现方法代码实例

一、推荐方法 CURL获取$c = curl_init();$url = 'www.jb51.net';curl_setopt($c, CURLOPT_URL, $url);curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);$data = curl_exec($c);curl_close($c);$pos = strpos($data,'utf-8');if($...

weixin_29011239的博客 221

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

php获取请求的数据乱码,php 获取数据乱码有关问题

php 获取数据乱码问题本帖最后由 qq_25293153 于 2015-01-13 15:42:18 编辑file_get_contents采集一个页面的数据,获取的数据是乱码,已经使用了检测编码的方式,检测的是utf-8,我的页面编码也是utf-8,但是还是显示乱码,不知道为什么$url="xxx";$opts=array('http'=>array('user_agent'=&...

weixin_39907591的博客 155

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

php获取请求的数据乱码问题,php获取数据乱码问题

file_get_contents 采集一个页面的数据,获取的数据是乱码,已经使用了检测编码的方式,检测的是utf-8,我的页面编码也是utf-8,但是还是显示乱码,不知道为什么$url="xxx";$opts = array( 'http'=>array( 'user_agent' => "Mozilla/4.0 (compatible; MSIE 5.01; Windo...

weixin_35123329的博客 314

php 数组取数据乱码,php 获取数据乱码有关问题

本帖最后由 qq_25293153 于 2015-01-13 15:42:18 编辑 file_get_contents 采集一个页面的数据,获取的数据是乱码,已经使用了检测编码的方式,检测的是utf-8,我的页面编码也是utf-8,但是还是显示乱码,不知道为什么$url="xxx";$opts = array('http'=>array('...

weixin_29288313的博客 220

php偷取,PHP偷取UTF-8目标网页内容输出为空白

利用PHP中的file_get_contents(URL)函数实现偷取网页正文内容的时候,将偷取过来的UTF-8网页内容进行转码后输出,直接输出可以看到偷取后的内容。可有时我们有时也会遇到在输出偷取过来的内容时,却是一片空白,什么都没有。例如有如下代码:$url = "http://www.nbrlw.com/wtrl/2/index.html";$string = file_get_conten...

weixin_39653311的博客 269

关于file_get_contents读取http乱码问题

今天从早上弄到现在也没解决~~~~这里我想先谈一下这个 file_get_contents今天为了解决乱码问题,我又把精华帖子里面的看了一遍了~~之前我也遇到一次~~那次是因为phpmyadmin的版本不同导致乱码,也费了我不少时间才解决。废话不多说了~~现在我想问的是 file_get_contents默认的获取方式是utf8~~~我测试了一下,读取utf8网页正常但是读

phphot 3961

php获取网页的内容file get,php 的file_get_contents函数获取网页内容不全的问题。

$a = file_get_contents('http://www.giabbs.com/thread-756955-1-1.html');var_dump($a);file_put_contents('a.txt', $a);代码如上面。运行代码就发现,内容只获取到一半。在中间断掉了。这种情况一般是转码的情况,有些特殊字符无法转换,然后断掉的。可是为啥用这个函数获取原始内容也这样,真心想不通啊...

weixin_30224231的博客 696

PHP用file_get_contents () 函数得到的HTML网页内容是乱码的原因,你知道吗?

获取HTM网页,用file_get_contents () 获取到的内容是乱码,如下图: 但直接在浏览器打开这个url看到的json数据是正常的, 原来是传送的数据经过了 Content-Encoding: gzip压缩 有时候用 file_get_contents() 函数抓取网页会发生...

半块西瓜皮的博客 1381

php gzip乱码,php file_get_contents抓取Gzip网页乱码的解决方法

本节内容:file_get_contents抓取Gzip网页乱码在php编程中,使用 file_get_contents() 函数抓取网页会发生乱码。导致乱码的可能原因如下:一个是编码问题,一个是目标页面开了Gzip。以下为大家介绍下在开启Gzip功能时,防止产生乱码的方法。把抓取到的内容转下编码即可($content=iconv("GBK", "UTF-8//IGNORE", $content)...

weixin_29866423的博客 333

爬取html数据中文乱码,解决PHP中file_get_contents抓取网页中文乱码问题

根据网上有朋友介绍说原因可能是服务器开了GZIP压缩。下面是用firebug查看我的博客的头信息,Gzip是开了的。请求头信息原始头信息代码如下 复制代码Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Encoding gzip, deflateAccept-Language zh-cn,zh...

weixin_42462603的博客 824

file_get_contents() 函数抓取网页

有时候用 file_get_contents() 函数抓取网页会发生乱码现象。有两个原因会导致乱码,一个是编码问题,一个是目标页面开了Gzip。 编码问题好办,把抓取到的内容转下编码即可($content=iconv("GBK", "UTF-8//IGNORE", $content);),我们这里讨论的是如何抓取开了Gzip的页面。怎么判断呢?获取的头部当中有Content-Encoding

1301

用file_get_contents抓取网页乱码的2种解决方式

今天自己在写一个程序,抓取别人的网页,之前公司有些功能也会需要,但是今天在抓取网页的时候发现了一个问题 用file_get_contents抓取网页发现如截图所示的乱码情况 于是用转换编码 $contents = iconv("gb2312", "utf-8//IGNORE",$contents); 之前遇到就算乱码也是网页编码的问题,html标签页不会有问题,问题还是没有解

打杂人-aerchi 905
上一篇: 页面收录关键词查询页面分析搜索引擎工作原理
下一篇: RAMFS和TMPFS两种文件系统
simonjay2007
博客等级 码龄17年 104粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值