关于
归档
友链
猫咪
后台
切换模式
返回顶部
首页
说说
日常
开发
游戏
资源
虚拟货币
首页
说说
日常
开发
游戏
资源
虚拟货币
关于
归档
友链
猫咪
后台
PHP中编码的一些小知识
开发
·
2018-09-12
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
回复
厉害,厉害,你的博客速度还不错
瞅一瞅叭
服务器推荐
RackNerd 2C2G $20.98/年(美国 隐藏款)
狗云 1C0.75G ¥150/年(香港 BGP)
热门文章
HumanMod - 免费的集N多功能于一身的HFF(人类一败涂地)插件
记抖音爬虫中所遇到的坑
设置网易邮箱大师为Win10默认邮件客户端
微信表情包工具【2023/05/04】更新
更改TLY本地代理端口
让Tauri前端部分调试如调试常规Web项目般丝滑
使用 v2rayN + SSTap 对 Win10 + WSL2 进行超简单易用的科学上网设置
最新评论
ask-to-you: 不是的,你去搜这东西 你就已经在关注了 你肯定买了
土木坛子: 有趣的灵魂。
土木坛子: 确实,真真假假,但不是每个人都能辨别出来,感谢博主指出来。
网友小宋: 之前一直在想,为什么1panel不集成钉钉等等机器人
优惠券网站: msdn,i tell you上面好像有纯净版的系统呀。。。博主...
PinHsin: pipreqs生成的模块和本地版本不一致是什么原因呢
优惠券平台: 写的很详细具体,学习到了,多谢博主的分享!⌇●﹏●⌇
关于站长
佛山
liesauer#liesauer.net
LiesAuer
CC BY-NC-SA 4.0
粤ICP备16094588号-1
Theme
Jasmine
by
Kent Liao
厉害,厉害,你的博客速度还不错