模板消息大家都知道 ,推送给你有的有详情字样,点进去可以到你服务器一个页面。
详情页面我有一个xxx.sql的文件,点开后直接就能显示内容。
不应该啊!因为上传文件时,我的编码 是UTF-8,反而出现了乱码???
可能我的微信版本低吧?不过在pc浏览器打开,就会自动分析编码,不会乱码。
接下来我将文件编码转成工ANSI或是GBK,再次测试,没有中文乱码了。得意一下。。。
可是服务器别人上传的文件编码不保证人家都是GBK啊,也有UTF-8的。这样审核经理一看就要发彪了哇!!!
于是上网搜了一下 php 如何检测文件内容的编码 ,当是utf-8的我就将其转为GBK并重新写入到文件。
有办法 ,.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(),反而不行,具体原因不明确,可能是内容过多吧。
本文发布于:2024-01-29 00:02:09,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170645773411260.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |