关于PHP站点网页乱码的问题

4 篇文章 0 订阅

最近在做搜集网络新闻相关内容时发现一个“奇怪”的字符集问题:利用Python代码存储的html文件,在PHP站点上显示乱码。

该代码编辑字符集为“UTF-8”,与html文件的头信息meta设置charset相同,与PHP7 + Apache24站点设置默认的charset相同。使用IE10+/Chrome77+从本地磁盘打开文件结果显示正常,但是以站点访问浏览网页的方式打开该html文件却出现乱码问题:除了英文字符,皆是无法直接阅读的乱码。

仔细检查操作代码,该代码将文件内容直接以raw string的形式通过file.write(arg0)写入存储。编辑器、网页meta字符集charset和网站服务器server设置反复确认一致,甚至输出到DOS命令窗口显示正常,目标网页结果都是以上描述的乱码。

这是一个似乎没有答案的谜题。

一个用作显示的文件,一般情况下,涉及的操作只有:读取和写入。读取操作的话,关联的是网站和网页的配置/设置/configuration的问题;而写入操作有关的是文件写入方式和文件格式。配置没有问题,那就似乎和读取没有关系。剩下的就是写入操作的问题。该操作代码使用HTML模板,复制时编辑器字符集charset为UTF-8,搜集内容字符编码不指定。假设模板格式正确,问题出现在搜集的文本上,推导结果应该是:模板固定的内容显示正确,搜索添加的文本显示为乱码。实际结果是:所有的文本均显现乱码。所以内容格式没有问题。

那么问题只能是与操作代码的file.write(arg0)有关。

我们知道,文件写入操作的方式有两种:1)raw string ;2)binary code。raw string一般指可读的原始字符串,不进行转换格式的。binary code是指转换的不可读二进制字符串。

在反复测试中,确定第一种写入方式存在问题。尝试修改写入方式为binary code二进制代码,结果显示正常。问题已解决。

总结:

1)编辑器、网页以及网站字符编码charset设置相同;

2)写入和读取一致:写入前的数据和读取时的数据内容和格式一致。

这里有个问题:为何raw string和binary code两种方式写入的文本显示结果不一样?

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值