开发者社区> 行者武松> 正文

Java解析php函数json_encode unicode的编码问题

简介:
+关注继续查看


这篇文章主要介绍了java解析php函数json_encode unicode 编码问题,需要的朋友可以参考下。

android开发中在和服务器端接口对接时出现编码问题,从服务器端获取到的数据是 "\u8bbe\u59071ID-\u8bbe\u59071\u540d\u79f0;\u8bbe\u59073id-\u8bbe\u59073\u540d\u79f0;\u8bbe\u59077id-\u8bbe\u59077\u540d\u79f0" 接口是通过php函数中json_encode进行编码后返回的,在客户端通过java.net.URLdecoder.decode()解码不管用,但是直接将以上字符串复制到decode()方法中可以正常解码,把接收到的字符串经过utf-8编码后不管用,最后在网上搜索相关资料找到解决方法。

一、json_encode作用:

json_encode — 对变量进行 JSON 编码。

说明:string json_encode ($value ),返回 value 值的 JSON 形式。

参数:待编码的 value ,除了resource 类型之外,可以为任何数据类型

该函数只能接受 UTF-8 编码的数据(译注:指字符/字符串类型的数据)

返回值:编码成功则返回一个以 JSON 形式表示的 string 。

二、客户端用java语言解码:

第一种方法


  1. public String unescapeUnicode(String str){ 
  2.   StringBuffer b=new StringBuffer(); 
  3.   Matcher m = Pattern.compile("\\\\u([0-9a-fA-F]{4})").matcher(str); 
  4.   while(m.find()) 
  5.    b.append((char)Integer.parseInt(m.group(1),16)); 
  6.   return b.toString(); 
  7.  } 

直接使用unescapeUnicode()方法解码就可以了。

2. 使用 json_simple.jar 包解析

下载地址:http://www.jb51.net/softs/455885.html

JSON.simple是一个简单的Java类库,用于解析和生成JSON文本。不依赖于其它类库,性能高。


  1. Object obj=JSONValue.parse(jsonStr);return obj.toString(); 

三、PHP服务器端解决方法:


  1. <html> 
  2. <head><meta http-equiv="content-type" content="text/html;charset=utf-8"> 
  3. <title>php生成 json 中文</title> 
  4. <?php  
  5.   
  6. function arrayRecursive(&$array, $function, $apply_to_keys_also = false)  
  7. {  
  8.  static $recursive_counter = 0;  
  9.   
  10.  if (++$recursive_counter > 1000)  
  11.  {  
  12.    die('possible deep recursion attack');  
  13.  }  
  14.   
  15.  foreach ($array as $key => $value)  
  16.  {  
  17.   
  18.   if (is_array($value))  
  19.   {  
  20.    //arrayRecursive($array[$key], $function, $apply_to_keys_also);  
  21.   }  
  22.   else 
  23.   {  
  24.    $array[$key] = $function($value); 
  25.   }  
  26.   
  27.   if ($apply_to_keys_also && is_string($key))  
  28.   {  
  29.    $new_key = $function($key);  
  30.   
  31.    if ($new_key != $key)  
  32.    {  
  33.     $array[$new_key] = $array[$key];  
  34.     unset($array[$key]);  
  35.    }  
  36.   }  
  37.  } 
  38.  $recursive_counter--;  
  39. }  
  40.   
  41. function JSON($array)  
  42. {  
  43.  //arrayRecursive($array, 'urlencode', true);  
  44.  //print_r($array); 
  45.  $json = json_encode($array);  
  46.  return urldecode($json);  
  47. }  
  48.   
  49. $arrayarray = array 
  50.   (  
  51.    'Name'=>urlencode('php生成 json 中文'),  
  52.    'Age'=>20  
  53.   );  
  54.   
  55. echo JSON($array); 
  56. echo '</br>'; 
  57. echo urlencode('php生成 json 中文'); 
  58.   
  59. ?>  
  60. </body> 
  61. </html> 



作者:wulei

来源:51CTO

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
详解C++ 编写String 的构造函数、拷贝构造函数、析构函数和赋值函数
详解C++ 编写String 的构造函数、拷贝构造函数、析构函数和赋值函数
44 0
利用MaxCompute内建函数及UDTF转换json格式日志数据
本文介绍了如何使用MaxCompute UDF对JSON格式的日志进行信息提取和转换。
8815 0
[复变函数]第05堂课 1.4 复球面与 $\infty$; 作业讲解; 2 解析函数 2.1 解析函数的概念与 Cauchy-Riemann 方程
1. 复球面 大漠孤烟直, 长河落日圆. $$\bex \bbC\cong \bbS^2\bs \sed{N},\quad \bbC_\infty=\bbC\cup \sed{\infty}\mbox{ 扩充复平面}.
606 0
[复变函数]第07堂课 2.2 初等解析函数
  1. 指数函数 (1) 定义: $$\bex e^z=e^{x+iy}=e^x(\cos y+i\sin y). \eex$$ (2) 性质: a. $e^z$ 在 $\bbC$ 上解析, 且 $(e^z)'=e^z$.
745 0
前端智能化漫谈 (3) - pix2code推理部分解析
# 前端智能化漫谈 (3) - pix2code推理部分解析 上一节我们将pix2code的流程梳理了一遍,相信大家已经都可以跑起来了。 在谈pix2code的算法改进之前,关于训练和推理过程还有若干细节我们还需要进一步讨论一下。 ## onehot编码 上次我们讲到create_binary_representation,就是将单词转换成one hot编码。 ```
4934 0
Linux下C编程,子进程创建函数fork() 执行解析
最近在看进程间的通信,看到了fork()函数,虽然以前用过,这次经过思考加深了理解。现总结如下: 1.函数本身   (1)头文件   #include  #include   (2)函数原型   pid_t fork( void);  (pid_t 是一个宏定义,其实质是int 被定义在#include中)  返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,出错返回-1   (3)函数说明   一个现有进程可以调用fork函数创建一个新进程。
755 0
Java解析(读取)Json数据
以前看过书上说,XML是web service间传输信息的标准格式吧,就看了看XML。最近在做个网站,又说是有了JSON,第一回听说就看了看,总结总结一下。 1.JSON介绍   JSON比XML简单,主要体现在传输相同信息的情况下,文件的大小不同。
1990 0
+关注
行者武松
杀人者,打虎武松也。
17142
文章
2569
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载