关于
Buy Me a Coffee
归档
友链
猫咪
RSS
后台
切换模式
返回顶部
首页
说说
日常
开发
游戏
资源
首页
说说
日常
开发
游戏
资源
关于
Buy Me a Coffee
归档
友链
猫咪
RSS
后台
PHP中编码的一些小知识
开发
·
2018-09-12
·
更新于 2020-06-26
LiesAuer
### 文件编码 我们首先新建一个`test.php`并随便`echo`一些中文  然后在浏览器中访问,可以从下图中看到浏览器正确识别了编码,但是为什么呢?我们并没有告诉浏览器我们的编码是什么,浏览器是如何知道的呢?  答案就是服务器默认返回的`header`里面的`Content-type`中携带的编码啦,因为服务器中设置了编码为`UTF-8`刚好和我们的编码是一致的,所以浏览器就能正确显示啦。  那么我们将文件的编码改为`GBK`发生什么呢?  浏览器刷新网页,可以发现浏览器显示乱码了,因为我们的文件编码是`GBK`,但是我们服务器设置的编码还是`UTF-8`,所以浏览器把`GBK`内容当成`UTF-8`识别了,固然会乱码。这就是为什么我们直接把一些内容`echo`或者`var_dump`出来可能会乱码的原因。  另外说个题外话,有的人喜欢把采集下来的`html`内容直接给打印出来,发现出来的页面也会有乱码的情况,那是因为采集到的`html`内容可能和你当前的编码不一致,所以会显示为乱码,所以请进行转码并保持内容与你当前的编码一致,另外直接打印`html`内容,浏览器是会去解析的,所以我们就需要这样 ```php echo '
'; echo $html; echo '
'; ``` 把`html`内容放在`pre`标签内,这样浏览器就不会去解析`html`内容了 最后,我们在代码中设置服务器的编码,并再一次刷新网页,可以发现浏览器又再次正确识别了编码。   ### 服务器编码 如上面提到的,只需要一句简单的`header`即能设置服务器编码。服务器编码的作用是告诉浏览器,我发送给你的信息是什么编码的,浏览器就能正确去识别显示。 ```php header('Content-type: MIME类型; charset=编码'); ``` ### 网页编码 当我们服务器返回的内容是html的时候,我们就可以使用`meta`标签设置页面编码。 ```html
``` 那么当我们设置的服务器编码与设置的网页编码不一致时,浏览器到底听谁的呢?  我们可以从上图中知道答案是服务器编码。 ### 数据库编码 不谈及。 ### 总结 请保持文件编码、服务器编码、网页编码、数据库一致! 请保持文件编码、服务器编码、网页编码、数据库一致! 请保持文件编码、服务器编码、网页编码、数据库一致! 当任一不一致时都有可能导致乱码问题,当然也可自行部分转码,但会导致多处编码不一致,以后查编码问题会变得更加困难,所以还是保持编码一致吧。
如果您觉得文章或项目对您有帮助,戳我请博主喝一杯咖啡叭!
取消回复
提交评论
Roogle
2018-09-18
回复
厉害,厉害,你的博客速度还不错
瞅一瞅叭
个人接活
扒接口、爬虫、JS逆向
域名出售
uterminal.ai
服务器推荐
RackNerd 2C2G $20.98/年(美国 隐藏款)
狗云 1C0.75G ¥150/年(香港 BGP)
最新评论
DOL: 大佬,这个是不是抓不了群组消息,能读到群组的ID,但是下载不了
VIP: hi,QQ群什么时候再开vip,不出意外的话,进不了群mod拿不到
fff: 还有什么办法能把我的频道列举出来
fff: 大佬我也是这样https://ibb.co/85yyYzN
www: 配置文件填写后,运行exe 显示登录信息,然后就卡住了 ┌─...
从良未遂: 你好,我接入cloudflare后发现修改主题、发表文章、回复评...
colin: 所以用 windows 来开发是原罪
关于站长
广东 佛山
liesauer#liesauer.net
LiesAuer
CC BY-NC-SA 4.0
粤ICP备16094588号-1
萌ICP备20245567号
Theme
Jasmine
by
Kent Liao
厉害,厉害,你的博客速度还不错