微信模板消息详情页,查看附件时出现中文乱码解决

本文探讨了在处理模板消息中文件编码导致的中文乱码问题,通过检测文件编码并转换为统一格式,解决了不同编码文件在服务器上的显示问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模板消息大家都知道 ,推送给你有的有详情字样,点进去可以到你服务器一个页面。

详情页面我有一个xxx.sql的文件,点开后直接就能显示内容。

不应该啊!因为上传文件时,我的编码 是UTF-8,反而出现了乱码???

可能我的微信版本低吧?不过在pc浏览器打开,就会自动分析编码,不会乱码。

接下来我将文件编码转成工ANSI或是GBK,再次测试,没有中文乱码了。得意一下。。。

可是服务器别人上传的文件编码不保证人家都是GBK啊,也有UTF-8的。这样审核经理一看就要发彪了哇!!!

于是上网搜了一下 php 如何检测文件内容的编码 ,当是utf-8的我就将其转为GBK并重新写入到文件。

有办法 ,http://php.net/manual/en/function.mb-detect-encoding.php  ,

将反复测试,发现并不能很好地检测,我UTF-8还是GBK的反而给我返回是ASCII码?

最后在网上找了一个可以用,参考如下:

 /**
* 检测文件编码
 * @param string $file 文件路径
* @return string|null 返回 编码名 或 null
*/
 function detect_encoding($file) {
     $list = array('GBK', 'UTF-8', 'UTF-16LE', 'UTF-16BE', 'ISO-8859-1');
     $str = file_get_contents($file);
     foreach ($list as $item) {
         $tmp = mb_convert_encoding($str, $item, $item);
         if (md5($tmp) == md5($str)) {
             return $item;
         }
     }
     return null;
}

当然检测返回如果是utf-8,我还要转一下编码,用了这个函数可以,$str:读取的文件内容,第一个item:要转为的GBK,第二个item,原字符的编码。

mb_convert_encoding($str, $item, $item);

可以用,但用了那个iconv(),反而不行,具体原因不明确,可能是内容过多吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值