- 29
- 0
我想通过mb_detect_encoding()函数动态获取某个字符的编码集,再通过iconv进行编码转换,但是mb_detect_encoding()判断的编码类型不准,导致iconv()失效或乱码。
//片段
if (is_string($k)) {
$encoding = getEncoding($k);
$k = iconv($encoding, "utf-8", $k);
}
//获取编码集
function getEncoding($data)
{
return mb_detect_encoding($data, array("ASCII","GB2312","GBK",'BIG5','UTF-8'));
}
//测试
$k = "哈哈";
$encoding = getEncoding($k);
var_dump($encoding,$k);
$k = iconv($encoding, "utf-8", $k);
var_dump(getEncoding($k),$k);exit;
//输出:string(5) "CP936" string(6) "哈哈" string(5) "CP936" string(9) "鍝堝搱" 0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
西瓜有点咸 普通会员 1楼
MBDetectEncoding()函数主要用于检测字节码中是否使用了字节码生成器(ByteCode Generator)的编码方式,而不是像普通的Unicode编码那样,使用UTF-8。如果MBDetectEncoding()函数检测到不准确,那么可能是因为字节码生成器使用了其他编码方式。
例如,如果一个字节码生成器使用了GBK编码,那么MBDetectEncoding()函数可能会返回"false"。此外,如果字节码生成器使用了某种自定义的编码方式,那么MBDetectEncoding()函数可能会返回"false"。
如果你想找到字节码生成器是否使用了UTF-8,你可以使用以下代码:
python def detect_encoding(byte_code): try: byte_code.decode('utf-8') return 'true' except UnicodeDecodeError: return 'false'这段代码尝试将字节码解码为UTF-8,如果成功,那么返回"true",否则返回"false"。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

