对于页面编码导致乱码的理解
以前也遇到过不只一次的编码不一致的问题,今天和 laruence 前辈学习了一下,终于明白了其中的一些东西
1. 文件有自己的编码 ,比如windows下的ANSI、或是UTF8 。
2. apache有一个DefaultCharset
3. 程序中可以规定返回的编码格式,如php中的 header("Content-Type:text/html; charset=utf-8");
4. 页面文件的头部可以规定编码:如: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
问题出来了,四种编码要是不一致,会怎么样呢?
1. 页面没有指定charset , Apache配置defaultcharst gbk , 页面文件编码是utf-8 ,结果乱码
2. 页面指定charset为utf-8, Apache配置defaultcharset gbk. 页面文件是utf-8 ,结果乱码
3. PHP header申明charset为utf8, Apache配置defaultcharst gbk,页面文件编码是utf8,结果正常
4. 页面指定charset为utf-8, Apache设置DefaultCharset off, 页面文件是utf-8 ,结果正常
结论:
1. apache给客户浏览器发送的HTTP头信息中,Content-Type可以用程序来改变
Date: Sat, 18 Oct 2008 21:53:51 GMT
Server: Apache/2.0.52 (Red Hat)
X-Powered-By: PHP/5.3.0alpha2
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=GB2312
2. 既使,文件存储格式和页面中规定的编码一致的情况下也有可能出现乱码,因为apache中DefaultCharset和页面的规定字符集的优先级不可确定,据说不同浏览器的标准不同
3。当Apache不指定defaultcharset的时候,页面编码由页面自己的meta标签指定。
4. 当Apache指定的时候,将忽略页面中的meta标签指定的编码. 但是容许脚本直接header编码方式给客户端
最后,还有一个更详细的解释,来自laruence的原创 http://www.laruence.com/2008/10/16/559.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!