目录
回复讨论(解决方案)
首页 后端开发 php教程 php json 不能解析中文字符串???

php json 不能解析中文字符串???

Jun 23, 2016 pm 02:21 PM

今天遇到一个很奇怪的问题,在使用json_decode的时候,遇到一个奇怪的问题,在遇到中文字符组的时候,怎么都解析不了,把这个中文的字段删除,里面就能解析了....搞了半天不知道哪里的问题,路过的大虾帮忙看看

	$nodeAry=array();	while($row=mssql_fetch_array($rs)){		$description=strstr("//","",$row['description']);	   array_push($nodeAry,'{"fchrItemID":"'.$row["fchrItemID"].'","fchrItemTypeID":"'.$row["fchrItemTypeID"].'","fchrItemName":"'.$row["fchrItemName"].'","flotQuotePrice":"'.$row["flotQuotePrice"].'","description":"'.trim($description).'","fdtmLastModifyTime":"'.$row["fdtmLastModifyTime"].'","sales_volume":"'.$row["sales_volume"].'"}');    }	$tbstr=implode(',',$nodeAry);   ?>{"table":[<?=$tbstr;?>]}
登录后复制


这里的description 字段有中文,只要把这个字段去掉就可以了,

 header("Content-Type:text/html; charset=utf-8");		$ch = curl_init();	curl_setopt($ch, CURLOPT_URL, $remoteAPIBasePath . "sync2shop_api/item.php");	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);	curl_setopt($ch, CURLOPT_HEADER, 0);	$output = curl_exec($ch);		curl_close($ch);		$obj=json_decode(iconv("gb2312","utf-8",$output));	var_dump( $obj);	//$obj=json_decode($output);	$rscount=count($obj->table);		$han=fopen("debug.php","a");	fwrite($han,$output."---------".$rscount);	fclose($han);
登录后复制


我是这么解析的,不知道哪里有错误,有谁帮忙看看!


回复讨论(解决方案)

php 的 json 函数只对 utf-8 编码的的字符串有效

你需要先将字符串转成 utf-8 编码的,然后再解码

只能说你拿到的 json 不合规范,中文应该都是 \uxxxx 形式

已经设置编码utf-8 编码了,但是还是不行啊

只能说你拿到的 json 不合规范,中文应该都是 \uxxxx 形式

数据取出的数据怎么会有反斜杠呢?自己加一个么?

我的数据是从远程数据库取的,难道会有影响吗?

你最好贴出你的数据,只要格式正确。不会有问题的

$s = '{"a":"我的","b":"数据","c":["是从远程数据库","取的"],"d":"难道会有影响吗?"}';$s = iconv('gbk', 'utf-8', $s);print_r(json_decode($s));
登录后复制
登录后复制
stdClass Object(    [a] => 我的    [b] => 数据    [c] => Array        (            [0] => 是从远程数据库            [1] => 取的        )    [d] => 难道会有影响吗?)
登录后复制
登录后复制

你最好贴出你的数据,只要格式正确。不会有问题的

$s = '{"a":"我的","b":"数据","c":["是从远程数据库","取的"],"d":"难道会有影响吗?"}';$s = iconv('gbk', 'utf-8', $s);print_r(json_decode($s));
登录后复制
登录后复制
stdClass Object(    [a] => 我的    [b] => 数据    [c] => Array        (            [0] => 是从远程数据库            [1] => 取的        )    [d] => 难道会有影响吗?)
登录后复制
登录后复制




我只截取一部分,数据太多了,麻烦帮忙看看呐!

"table":[{"fchrItemID":"1E7D5286-7379-4B6E-B63C-0081596B808F","fchrItemTypeID":"17E0A935-E0FF-4488-B2F0-CC9F2926C001","fchrItemName":"H13222S13","flotQuotePrice":"499.000000","description":"高密度的丝光棉面料,手工钉珠的人像艺术款。","fdtmLastModifyTime":"","sales_volume":""},{"fchrItemID":"E82E5A29-A1BD-4F53-AD65-0147906E224D","fchrItemTypeID":"73A4E44D-7BF7-49CF-9A75-DCC805D93FDB","fchrItemName":"H13143C04","flotQuotePrice":"799.000000","description":"","fdtmLastModifyTime":"","sales_volume":""},{"fchrItemID":"A7FD2243-D39C-49D5-9785-01DD923FA60E","fchrItemTypeID":"17E0A935-E0FF-4488-B2F0-CC9F2926C001","fchrItemName":"H13222C04","flotQuotePrice":"499.000000","description":"丝光棉显示高档感,图形用胶印和钉珠的复杂工艺而非普通大众品牌较多使用的平面印花印制,彰显独特的设计点。","fdtmLastModifyTime":"","sales_volume":""},{"fchrItemID":"4E82D694-CA4C-4134-92BA-027EE10B9100","fchrItemTypeID":"17E0A935-E0FF-4488-B2F0-CC9F2926C001","fchrItemName":"H13222C35","flotQuotePrice":"499.000000","description":"高级丝光棉,蜻蜓为元素的创意有趣的图案和品牌logo和金属贴片的再组合方式呈现艺术感的品牌特性。","fdtmLastModifyTime":"","sales_volume":""},{"fchrItemID":"6D129F91-1869-47BE-9AED-02A0E156B120","fchrItemTypeID":"6DC7F007-C0EB-45FE-94F1-4C792B8FEB23","fchrItemName":"H13456C14","flotQuotePrice":"3899.000000","description":"","fdtmLastModifyTime":"","sales_volume":"0"},{"fchrItemID":"6FA0B24C-6C17-43BB-ACAE-04369F73FE8D","fchrItemTypeID":"17E0A935-E0FF-4488-B2F0-CC9F2926C001","fchrItemName":"H13222C21","flotQuotePrice":"499.000000","description":"","fdtmLastModifyTime":"","sales_volume":""},{"fchrItemID":"A875F37E-503E-4F25-BCEC-04BA7A53D18F","fchrItemTypeID":"6FD4DF7E-3F1E-4B04-90EF-189664ADD3EA","fchrItemName":"H13111C13","flotQuotePrice":"599.000000","description":"","fdtmLastModifyTime":"","sales_volume":""},{"fchrItemID":"4C3E6DFB-F4CE-404D-930D-04BE6591965F","fchrItemTypeID":"6FD4DF7E-3F1E-4B04-90EF-189664ADD3EA","fchrItemName":"H13111C12","flotQuotePrice":"699.000000","description":"高支高密的全棉面料,前胸对称的色块拼接设计款。","fdtmLastModifyTime":"","sales_volume":""},
登录后复制

人呢。。。。

$s =<<< TXT{"table":[{"fchrItemID":"1E7D5286-7379-4B6E-B63C-0081596B808F","fchrItemTypeID":"17E0A935-E0FF-4488-B2F0-CC9F2926C001","fchrItemName":"H13222S13","flotQuotePrice":"499.000000","description":"高密度的丝光棉面料,手工钉珠的人像艺术款。","fdtmLastModifyTime":"","sales_volume":""},{"fchrItemID":"E82E5A29-A1BD-4F53-AD65-0147906E224D","fchrItemTypeID":"73A4E44D-7BF7-49CF-9A75-DCC805D93FDB","fchrItemName":"H13143C04","flotQuotePrice":"799.000000","description":"","fdtmLastModifyTime":"","sales_volume":""},{"fchrItemID":"A7FD2243-D39C-49D5-9785-01DD923FA60E","fchrItemTypeID":"17E0A935-E0FF-4488-B2F0-CC9F2926C001","fchrItemName":"H13222C04","flotQuotePrice":"499.000000","description":"丝光棉显示高档感,图形用胶印和钉珠的复杂工艺而非普通大众品牌较多使用的平面印花印制,彰显独特的设计点。","fdtmLastModifyTime":"","sales_volume":""},{"fchrItemID":"4E82D694-CA4C-4134-92BA-027EE10B9100","fchrItemTypeID":"17E0A935-E0FF-4488-B2F0-CC9F2926C001","fchrItemName":"H13222C35","flotQuotePrice":"499.000000","description":"高级丝光棉,蜻蜓为元素的创意有趣的图案和品牌logo和金属贴片的再组合方式呈现艺术感的品牌特性。","fdtmLastModifyTime":"","sales_volume":""},{"fchrItemID":"6D129F91-1869-47BE-9AED-02A0E156B120","fchrItemTypeID":"6DC7F007-C0EB-45FE-94F1-4C792B8FEB23","fchrItemName":"H13456C14","flotQuotePrice":"3899.000000","description":"","fdtmLastModifyTime":"","sales_volume":"0"},{"fchrItemID":"6FA0B24C-6C17-43BB-ACAE-04369F73FE8D","fchrItemTypeID":"17E0A935-E0FF-4488-B2F0-CC9F2926C001","fchrItemName":"H13222C21","flotQuotePrice":"499.000000","description":"","fdtmLastModifyTime":"","sales_volume":""},{"fchrItemID":"A875F37E-503E-4F25-BCEC-04BA7A53D18F","fchrItemTypeID":"6FD4DF7E-3F1E-4B04-90EF-189664ADD3EA","fchrItemName":"H13111C13","flotQuotePrice":"599.000000","description":"","fdtmLastModifyTime":"","sales_volume":""},{"fchrItemID":"4C3E6DFB-F4CE-404D-930D-04BE6591965F","fchrItemTypeID":"6FD4DF7E-3F1E-4B04-90EF-189664ADD3EA","fchrItemName":"H13111C12","flotQuotePrice":"699.000000","description":"高支高密的全棉面料,前胸对称的色块拼接设计款。","fdtmLastModifyTime":"","sales_volume":""}]}TXT;$s = iconv('gbk', 'utf-8', $s);print_r(json_decode($s));
登录后复制
stdClass Object
(
[table] => Array
(
[0] => stdClass Object
(
[fchrItemID] => 1E7D5286-7379-4B6E-B63C-0081596B808F
[fchrItemTypeID] => 17E0A935-E0FF-4488-B2F0-CC9F2926C001
[fchrItemName] => H13222S13
[flotQuotePrice] => 499.000000
[description] => 高密度的丝光棉面料,手工钉珠的人像艺术款。
[fdtmLastModifyTime] =>
[sales_volume] =>
)

[1] => stdClass Object
(
[fchrItemID] => E82E5A29-A1BD-4F53-AD65-0147906E224D
[fchrItemTypeID] => 73A4E44D-7BF7-49CF-9A75-DCC805D93FDB
[fchrItemName] => H13143C04
[flotQuotePrice] => 799.000000
[description] =>
[fdtmLastModifyTime] =>
[sales_volume] =>
)

[2] => stdClass Object
(
[fchrItemID] => A7FD2243-D39C-49D5-9785-01DD923FA60E
[fchrItemTypeID] => 17E0A935-E0FF-4488-B2F0-CC9F2926C001
[fchrItemName] => H13222C04
[flotQuotePrice] => 499.000000
[description] => 丝光棉显示高档感,图形用胶印和钉珠的复杂工艺而非普通大众品牌较多使用的平面印花印制,彰显独特的设计点。
[fdtmLastModifyTime] =>
[sales_volume] =>
)

[3] => stdClass Object
(
[fchrItemID] => 4E82D694-CA4C-4134-92BA-027EE10B9100
[fchrItemTypeID] => 17E0A935-E0FF-4488-B2F0-CC9F2926C001
[fchrItemName] => H13222C35
[flotQuotePrice] => 499.000000
[description] => 高级丝光棉,蜻蜓为元素的创意有趣的图案和品牌logo和金属贴片的再组合方式呈现艺术感的品牌特性。
[fdtmLastModifyTime] =>
[sales_volume] =>
)

[4] => stdClass Object
(
[fchrItemID] => 6D129F91-1869-47BE-9AED-02A0E156B120
[fchrItemTypeID] => 6DC7F007-C0EB-45FE-94F1-4C792B8FEB23
[fchrItemName] => H13456C14
[flotQuotePrice] => 3899.000000
[description] =>
[fdtmLastModifyTime] =>
[sales_volume] => 0
)

[5] => stdClass Object
(
[fchrItemID] => 6FA0B24C-6C17-43BB-ACAE-04369F73FE8D
[fchrItemTypeID] => 17E0A935-E0FF-4488-B2F0-CC9F2926C001
[fchrItemName] => H13222C21
[flotQuotePrice] => 499.000000
[description] =>
[fdtmLastModifyTime] =>
[sales_volume] =>
)

[6] => stdClass Object
(
[fchrItemID] => A875F37E-503E-4F25-BCEC-04BA7A53D18F
[fchrItemTypeID] => 6FD4DF7E-3F1E-4B04-90EF-189664ADD3EA
[fchrItemName] => H13111C13
[flotQuotePrice] => 599.000000
[description] =>
[fdtmLastModifyTime] =>
[sales_volume] =>
)

[7] => stdClass Object
(
[fchrItemID] => 4C3E6DFB-F4CE-404D-930D-04BE6591965F
[fchrItemTypeID] => 6FD4DF7E-3F1E-4B04-90EF-189664ADD3EA
[fchrItemName] => H13111C12
[flotQuotePrice] => 699.000000
[description] => 高支高密的全棉面料,前胸对称的色块拼接设计款。
[fdtmLastModifyTime] =>
[sales_volume] =>
)

)

)

能帮我远程弄一下么? 我用了curl_init(),curl_exec() ,输出流,获取的

$ch = curl_init();	curl_setopt($ch, CURLOPT_URL, $remoteAPIBasePath . "sync2shop_api/item.php");	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);	curl_setopt($ch, CURLOPT_HEADER, 0);	$output = curl_exec($ch);		curl_close($ch);			$obj=json_decode(iconv("gb2312","utf-8",$output));	
登录后复制
登录后复制

能帮我远程弄一下么? 我用了curl_init(),curl_exec() ,输出流,获取的

$ch = curl_init();	curl_setopt($ch, CURLOPT_URL, $remoteAPIBasePath . "sync2shop_api/item.php");	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);	curl_setopt($ch, CURLOPT_HEADER, 0);	$output = curl_exec($ch);		curl_close($ch);			$obj=json_decode(iconv("gb2312","utf-8",$output));	
登录后复制
登录后复制



这里的$output 打印出来就是json的东西,不是直接写在里面的

如果向你这么写,为啥我的会报错呢?

 header("Content-Type:text/html; charset=utf-8");		$ch = curl_init();	curl_setopt($ch, CURLOPT_URL, $remoteAPIBasePath . "sync2shop_api/item.php");	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);	curl_setopt($ch, CURLOPT_HEADER, 0);	$output = curl_exec($ch);	curl_close($ch);		$obj=<<< TXT var_dump($output) TXT;	$obj=json_decode(iconv("gb2312","utf-8",$output));		echo count($obj->table);
登录后复制



程序文件保存为UTF-8编码。
item.php那个文件的字符集是什么?是否有转码的必要?
一般从GBK转UTF-8比较好。

如果想用json_decode解析gbk编码。很容易。只要转换为utf8编码既可。
具体实现和原因可以查看这篇日志
http://www.bo56.com/%E5%9C%A8php%E4%B8%AD%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8json_decode%E8%A7%A3%E6%9E%90gbk%E7%BC%96%E7%A0%81%E7%9A%84json%E5%AD%97%E7%AC%A6%E4%B8%B2/

在php中如何使用json_decode解析gbk编码的json字符串

程序文件保存为UTF-8编码。
item.php那个文件的字符集是什么?是否有转码的必要?
一般从GBK转UTF-8比较好。

item 文件是utf-8 的

$output 是你用 curl 从 item.php 获取的
而 item.php 是 utf-8 的
那么
首先检查 item.php 及其相关的文件是否有 BOM 头
其次检查数据库读出的内容是否为 utf-8 的

$output 是你用 curl 从 item.php 获取的
而 item.php 是 utf-8 的
那么
首先检查 item.php 及其相关的文件是否有 BOM 头
其次检查数据库读出的内容是否为 utf-8 的

从output 看 utf-8 的,item 文件没有bom ,
但是用json_decode($output ) ,发现count 是0 ,应该还是解析json 的问题   

$obj=json_decode(iconv("gb2312","utf-8",$output));
    var_dump( $obj);
输出$obj看下,看是否是一个完整的json格式。

$output = curl_exec($ch);
取到 $output 后
echo base64_encode(substr($output, 0, 200));
贴出结果

$output = curl_exec($ch);
取到 $output 后
echo base64_encode(substr($output, 0, 200));
贴出结果


无语了

http://218.85.194.210:8888/sync2shop_api/item.php   ,这里是远程的json 数据

你在改数据?

你在改数据?

我在同步远程的数据,往本地数据库插入啊,远程的json 传过来,解析不了,本地也就没东西了

现在从 http://218.85.194.210:8888/sync2shop_api/item.php 得到的数据中已经已经没有中文了

item.php是远程的,utf-8,那么你获取的item.php里的数据也是UTF-8的,应该没有转码的必要了。

先urlencode在json然后urldecode

问题已经解决,谢谢各位的帮助!

我是用了加密解密函数 ,实现的json 传送的...

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

在Laravel中使用Flash会话数据 在Laravel中使用Flash会话数据 Mar 12, 2025 pm 05:08 PM

Laravel使用其直观的闪存方法简化了处理临时会话数据。这非常适合在您的应用程序中显示简短的消息,警报或通知。 默认情况下,数据仅针对后续请求: $请求 -

PHP记录:PHP日志分析的最佳实践 PHP记录:PHP日志分析的最佳实践 Mar 10, 2025 pm 02:32 PM

PHP日志记录对于监视和调试Web应用程序以及捕获关键事件,错误和运行时行为至关重要。它为系统性能提供了宝贵的见解,有助于识别问题并支持更快的故障排除

php中的卷曲:如何在REST API中使用PHP卷曲扩展 php中的卷曲:如何在REST API中使用PHP卷曲扩展 Mar 14, 2025 am 11:42 AM

PHP客户端URL(curl)扩展是开发人员的强大工具,可以与远程服务器和REST API无缝交互。通过利用Libcurl(备受尊敬的多协议文件传输库),PHP curl促进了有效的执行

简化的HTTP响应在Laravel测试中模拟了 简化的HTTP响应在Laravel测试中模拟了 Mar 12, 2025 pm 05:09 PM

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显着减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

在Codecanyon上的12个最佳PHP聊天脚本 在Codecanyon上的12个最佳PHP聊天脚本 Mar 13, 2025 pm 12:08 PM

您是否想为客户最紧迫的问题提供实时的即时解决方案? 实时聊天使您可以与客户进行实时对话,并立即解决他们的问题。它允许您为您的自定义提供更快的服务

解释PHP中晚期静态结合的概念。 解释PHP中晚期静态结合的概念。 Mar 21, 2025 pm 01:33 PM

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸

自定义/扩展框架:如何添加自定义功能。 自定义/扩展框架:如何添加自定义功能。 Mar 28, 2025 pm 05:12 PM

本文讨论了将自定义功能添加到框架上,专注于理解体系结构,识别扩展点以及集成和调试的最佳实践。

See all articles