php 碰到一个中文乱码引起的神奇的问题
大家讲道理
大家讲道理 2017-05-31 10:33:23
[PHP讨论组]

比如

$data = '百度�腾讯,阿里';

$data1 // 是一个变量 打印出来就是 '百度�腾讯,阿里'

var_dump($data);
var_dump($data1);

打印结果:
$data:string(24) "百度�腾讯,阿里"
$data1:string(22) "百度�腾讯,阿里"

$keywordsData = json_encode($data, JSON_UNESCAPED_UNICODE);
$keywordsData1 = json_encode($data1, JSON_UNESCAPED_UNICODE);
var_dump($keywordsData);
var_dump($keywordsData1);

打印结果:
keywordsData:string(26) ""百度�腾讯,阿里""
keywordsData1:bool(false)

这是为什么啊 我想直接拿变量 但现在遇到这个问题,求解答,谢谢

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
phpcn_u1582
$data:string(24) "百度�腾讯,阿里"  //这里8个字符,utf-8中的中文占3个字符,因此长度为24
$data1:string(22) "百度�腾讯,阿里" //这里长度为 22,说明不是utf-8 而json_encode不支持非utf-8字符
//输出错误看看
var_dump(json_last_error());
習慣沉默

两个变量不一样,虽然都是字符串,但是长度一个24,一个22,第二个很明显不是UTF8编码,json_encode当然会错误。

你可以先检测下字符串编码,mb_detect_encoding,然后再转成UTF8,mb_convert_encoding

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号