php引用exec获取httpAPI接口数据后乱码

php引用exec获取httpAPI接口数据后乱码

今天在做项目时,用到exec获取接口数据,返回数据为json,里面包含有中文,出现了乱码现象在这里插入代码片
对接接口代码:

$str = "java -jar C:\Users\Administrator\Desktop\TestHkSDK.jar \"{".$json_str."}\"";
exec($str,$return);

返回数据
在这里插入图片描述
网上查找了很多办法,没有解决
验证未成功方法:
1.在PHP用执行命令行语句,切换命令行窗口的编码,代码如下:

   exec('chcp 65001');

2.在php文件调用exec前设定环境变量

$locale='en_US.UTF-8';
setlocale(LC_ALL,$locale);
putenv('LC_ALL='.$locale);

等等各种解决办法都没有效果。

最终解决方案:

$str = "java -jar C:\Users\Administrator\Desktop\TestHkSDK.jar \"{".$json_str."}\"";
exec($str,$return);
//$encoding = array("auto","US-ASCII","ASCII","UTF-8","GB2312","GBK","BIG5",'EUC','UNICODE',"UCS","GB18030","CP949","ISO-8859-1");
//用于查看json字串的字符集编码
//$encode = mb_detect_encoding($string, $encoding);
//iconv字符串转码,GBK是现在编码,UTF-8是转换后编码
$string = iconv("GBK","utf-8",$return[0]);
$data = json_decode($string);

以上仅供参考,如果有问题,大家可以再讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值