关于
Buy Me a Coffee
归档
友链
猫咪
RSS
后台
切换模式
返回顶部
首页
说说
日常
开发
游戏
资源
虚拟货币
首页
说说
日常
开发
游戏
资源
虚拟货币
关于
Buy Me a Coffee
归档
友链
猫咪
RSS
后台
PHP中编码的一些小知识
开发
·
2018-09-12
·
更新于 2020-06-26
LiesAuer
### 文件编码 我们首先新建一个`test.php`并随便`echo`一些中文 ![WX20180912-090750@2x.png](https://storage.liesauer.net/2018/09/3573411782.png) 然后在浏览器中访问,可以从下图中看到浏览器正确识别了编码,但是为什么呢?我们并没有告诉浏览器我们的编码是什么,浏览器是如何知道的呢? ![WX20180912-090858@2x.png](https://storage.liesauer.net/2018/09/2719086350.png) 答案就是服务器默认返回的`header`里面的`Content-type`中携带的编码啦,因为服务器中设置了编码为`UTF-8`刚好和我们的编码是一致的,所以浏览器就能正确显示啦。 ![WX20180912-090946@2x.png](https://storage.liesauer.net/2018/09/1165739225.png) 那么我们将文件的编码改为`GBK`发生什么呢? ![WX20180912-091033@2x.png](https://storage.liesauer.net/2018/09/3431860164.png) 浏览器刷新网页,可以发现浏览器显示乱码了,因为我们的文件编码是`GBK`,但是我们服务器设置的编码还是`UTF-8`,所以浏览器把`GBK`内容当成`UTF-8`识别了,固然会乱码。这就是为什么我们直接把一些内容`echo`或者`var_dump`出来可能会乱码的原因。 ![WX20180912-091047@2x.png](https://storage.liesauer.net/2018/09/353245631.png) 另外说个题外话,有的人喜欢把采集下来的`html`内容直接给打印出来,发现出来的页面也会有乱码的情况,那是因为采集到的`html`内容可能和你当前的编码不一致,所以会显示为乱码,所以请进行转码并保持内容与你当前的编码一致,另外直接打印`html`内容,浏览器是会去解析的,所以我们就需要这样 ```php echo '
'; echo $html; echo '
'; ``` 把`html`内容放在`pre`标签内,这样浏览器就不会去解析`html`内容了 最后,我们在代码中设置服务器的编码,并再一次刷新网页,可以发现浏览器又再次正确识别了编码。 ![WX20180912-091153@2x.png](https://storage.liesauer.net/2018/09/1769683269.png) ![WX20180912-091226@2x.png](https://storage.liesauer.net/2018/09/2579495137.png) ### 服务器编码 如上面提到的,只需要一句简单的`header`即能设置服务器编码。服务器编码的作用是告诉浏览器,我发送给你的信息是什么编码的,浏览器就能正确去识别显示。 ```php header('Content-type: MIME类型; charset=编码'); ``` ### 网页编码 当我们服务器返回的内容是html的时候,我们就可以使用`meta`标签设置页面编码。 ```html
``` 那么当我们设置的服务器编码与设置的网页编码不一致时,浏览器到底听谁的呢? ![WX20180912-100044@2x.png](https://storage.liesauer.net/2018/09/1971682115.png) 我们可以从上图中知道答案是服务器编码。 ### 数据库编码 不谈及。 ### 总结 请保持文件编码、服务器编码、网页编码、数据库一致! 请保持文件编码、服务器编码、网页编码、数据库一致! 请保持文件编码、服务器编码、网页编码、数据库一致! 当任一不一致时都有可能导致乱码问题,当然也可自行部分转码,但会导致多处编码不一致,以后查编码问题会变得更加困难,所以还是保持编码一致吧。
如果您觉得文章或项目对您有帮助,戳我请博主喝一杯咖啡叭!
取消回复
提交评论
Roogle
2018-09-18
回复
厉害,厉害,你的博客速度还不错
瞅一瞅叭
域名出售
uterminal.ai
服务器推荐
RackNerd 2C2G $20.98/年(美国 隐藏款)
狗云 1C0.75G ¥150/年(香港 BGP)
最新评论
tinker: 为什么运行一段时间就会停止,重启又恢复!没有报错信息,频道信息和...
pansoo: 大佬,这个只能下载文件吗?能不能保存频道消息
Miller: 最好再多加一个查漏补缺的功能(捂脸(/ω\)),因为抓取了3天才...
Miller: 大佬,好像不会爬取jpeg文件,图片和视频数量对不上,是不是图片...
cola: 大佬,可以爬取电报频道的评论内容嘛
Miller: 大佬我终于会了,用cmd命令cd /d G:\cco,感谢大佬指点!
Miller: https://img13.chkaja.com/files/2...
关于站长
广东 佛山
liesauer#liesauer.net
LiesAuer
CC BY-NC-SA 4.0
粤ICP备16094588号-1
萌ICP备20245567号
Theme
Jasmine
by
Kent Liao
厉害,厉害,你的博客速度还不错