java解析php函数json_encode unicode 编码问题

 更新时间:2016年04月29日 10:39:44   投稿:wulei  
这篇文章主要介绍了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语言解码:

第一种方法

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

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

  2. 使用 json_simple.jar 包解析

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

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

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


 PHP服务器端解决方法:

<html>
<head><meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>php生成 json 中文</title>
<?php 
 
function arrayRecursive(&$array, $function, $apply_to_keys_also = false) 
{ 
 static $recursive_counter = 0; 
 
 if (++$recursive_counter > 1000) 
 { 
   die('possible deep recursion attack'); 
 } 
 
 foreach ($array as $key => $value) 
 { 
 
  if (is_array($value)) 
  { 
   //arrayRecursive($array[$key], $function, $apply_to_keys_also); 
  } 
  else
  { 
   $array[$key] = $function($value);
  } 
 
  if ($apply_to_keys_also && is_string($key)) 
  { 
   $new_key = $function($key); 
 
   if ($new_key != $key) 
   { 
    $array[$new_key] = $array[$key]; 
    unset($array[$key]); 
   } 
  } 
 }
 $recursive_counter--; 
} 
 
function JSON($array) 
{ 
 //arrayRecursive($array, 'urlencode', true); 
 //print_r($array);
 $json = json_encode($array); 
 return urldecode($json); 
} 
 
$array = array
  ( 
   'Name'=>urlencode('php生成 json 中文'), 
   'Age'=>20 
  ); 
 
echo JSON($array);
echo '</br>';
echo urlencode('php生成 json 中文');
 
?> 
</body>
</html>

相关文章

  • Java8 Instant 时间戳实例讲解

    Java8 Instant 时间戳实例讲解

    Instant类是Java8 中补充的一个 时间戳类,nstant 可以使用静态方法 now()或者of()方法来创建一个实例对象,本文通过实例代码讲解Java8 Instant 时间戳,感兴趣的朋友跟随小编一起看看吧
    2022-11-11
  • JAVA IDEA 打开assert 设置方式

    JAVA IDEA 打开assert 设置方式

    这篇文章主要介绍了JAVA IDEA 打开assert 设置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 浅谈SpringMVC中的session用法及细节记录

    浅谈SpringMVC中的session用法及细节记录

    下面小编就为大家带来一篇浅谈SpringMVC中的session用法及细节记录。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • struts2实现多文件上传的示例代码

    struts2实现多文件上传的示例代码

    本篇文章主要介绍了struts2实现多文件上传的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Spring Boot开发时Java对象和Json对象之间的转换

    Spring Boot开发时Java对象和Json对象之间的转换

    在Spring Boot开发中,我们经常需要处理Java对象和Json对象之间的转换,本文将介绍如何在Spring Boot项目中实现Java对象和Json对象之间的转换,感兴趣的朋友跟随小编一起看看吧
    2023-09-09
  • 基于JavaMail的Java邮件发送

    基于JavaMail的Java邮件发送

    电子邮件的应用非常广泛,例如在某网站注册了一个账户,自动发送一封欢迎邮件,通过邮件找回密码,自动批量发送活动信息等。本文将简单介绍如何通过 Java 代码来创建电子邮件,并连接邮件服务器发送邮件
    2021-10-10
  • Java API操作Hdfs的示例详解

    Java API操作Hdfs的示例详解

    这篇文章主要介绍了Java API操作Hdfs详细示例,遍历当前目录下所有文件与文件夹,可以使用listStatus方法实现上述需求,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • Spring boot + thymeleaf 后端直接给onclick函数赋值的实现代码

    Spring boot + thymeleaf 后端直接给onclick函数赋值的实现代码

    这篇文章主要介绍了Spring boot + thymeleaf 后端直接给onclick函数赋值的实现代码,需要的朋友可以参考下
    2017-06-06
  • 详解Spark Sql在UDF中如何引用外部数据

    详解Spark Sql在UDF中如何引用外部数据

    这篇文章主要为大家介绍了详解Spark Sql在UDF中如何引用外部数据示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Spring声明式事务和@Aspect的拦截顺序问题的解决

    Spring声明式事务和@Aspect的拦截顺序问题的解决

    本篇文章主要介绍了Spring声明式事务和@Aspect的拦截顺序问题的解决,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05

最新评论