php中关于iconv和mb_detetct_encoding的疑问

发布于 2022-08-29 16:39:45 字数 1113 浏览 18 评论 0

update 6.11在更仔细的看了php手册中关于mb_detect_encoding的评论之后,

If you try to use mb_detect_encoding to detect whether a string is valid UTF-8, use the strict mode, it is pretty worthless otherwise.

<?php
    $str = 'áéóú'; // ISO-8859-1
    mb_detect_encoding($str, 'UTF-8'); // 'UTF-8'
    mb_detect_encoding($str, 'UTF-8', true); // false
?>

我又有一个疑问,在检测gbk的时候mb_detect_encoding 返回的是cp936
我需要对这个值进行判断然后使用iconv('gbk','utf-8',$str)来转换,如果是别的呢》

gbk对应的是cp936 别的对应,我应该如何在检测方法中进行匹配呢》?



$a=' "name":"默认排序", "key":"sort", "value":"", "status":"0", "isSelected": "0" }'; // var_dump($b); $b=iconv('UTF-8', 'GBK', $a); $x=mb_detect_encoding($a); $y=mb_detect_encoding($b); var_dump($x,$y); var_dump($b);

样图是在浏览器编码utf8下截图,编码换成gbk后中文正常显示
样图是在浏览器编码utf8下截图,编码换成gbk后中文正常显示

疑问:1、为什么iconv转换后的字符串仍然为utf-8
2、mb_detect_encoding到底是探测的什么编码
3、产生则这样的问题后,我还能不能用mb_convert_encoding转码?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

鹿! 2022-09-05 16:39:45

首先,看这里
http://cn2.php.net/manual/zh/function.mb-detect-encoding.php
http://cn2.php.net/manual/zh/function.mb-detect-order.php

ps.
如果你是想输出json中文,可以考虑使用servicesjson类。

冷清清 2022-09-05 16:39:45

解决方案是:把utf-8 改成utf8

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文