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

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 包解析

  下载地址:http://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>

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
, php
json_encode
json encode unicode、json encode 编码、php json encode 编码、js解析json encode、json 返回unicode编码,以便于您获取更多的相关知识。

时间: 2024-08-22 14:33:38

java解析php函数json_encode unicode 编码问题_java的相关文章

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_enc

Java解析xml的四种方法汇总_java

1. DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作.由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的.DOM以及广义的基于树的处理具有几个优点.首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改.它还可以在任何时候在树中上下导航,而不是像SAX

java解析页面问题(字符编码)

问题描述 网上找了篇解析得到网页字符编码的例子,在机子上跑大部分是对的,得到正确的charset,但是在跑google网页时,得到的却是big5,但是拿出google的源码来看却是utf-8,不知道为什么? 解决方案 解决方案二:那个例子的源码你好好看一下嘛...应该能看懂的..一般来说,网页字符编码是写在html的head部分的,java直接可以得到里面的数据.解决方案三:要看代码.解决方案四:引用2楼magong的回复: 要看代码. importjava.io.*;importjava.ne

Java将简体中文转换成Unicode编码

public class ToUnicode { 07 08 /** 09 * main test methord 10 */ 11 public static void main(String[] args) { 12 // System.out.println(toUnicode("你好 世界!")); 13 } 14 15 /** 16 * A methord for Simple Chinese Lanuage to Unicode 17 * @param s Simple C

java解析任意层数json字符串的方法_java

复制代码 代码如下: //解析策略,有可能是解析json字符串,有可能为数据中的图片地址,email等package cc.util.regex; public enum RegexPolicy { Json("Json"), Image("ImageFromHtml");  private String value; RegexPolicy (String value) {  this.value = value; }  @Override public Stri

java 获取当前函数名的实现代码_java

废话不多说,直接上代码 复制代码 代码如下: import java.text.SimpleDateFormat; import java.util.Date; /** * Java实现类似C/C++中的__FILE__.__FUNC__.__LINE__等,主要用于日志等功能中. * * @version 1.0  * */ public abstract class CommonFunction { /** * 打印日志时获取当前的程序文件名.行号.方法名 输出格式为:[FileName |

JAVA中字符串函数subString的用法小结_java

String str;str=str.substring(int beginIndex);截取掉str从首字母起长度为beginIndex的字符串,将剩余字符串赋值给str: str=str.substring(int beginIndex,int endIndex);截取str中从beginIndex开始至endIndex结束时的字符串,并将其赋值给str; demo: 复制代码 代码如下: class Test { public static void main(String[] args)

unicode编码转换:PHP将汉字转换成Unicode编码的函数

这是一个将汉字转换成Unicode编码的PHP函数,支持GBK和UTF8编码.function uni_decode ($uncode){$word = json_decode(preg_replace_callback('/(\d{5});/', create_function('$dec', 'return \'\\u\'.dechex($dec[1]);'), '"'.$uncode.'"'));return $word;}对 Unicode 转换为汉字function uni_

使用Java将中文字符转换成Unicode编码

  这两天操作XML使用到了Jdom,在创建XML文件并输出到硬盘的时候遇到一个中文编码的问题:Jdom默认输出的XML编码是UTF-8,但是文档中如果出现中文字符那么该中文字符就会变成乱码,造成XML文件无法被正确解析. UTF-8应该是可以用来表示中文的吧?我不知道这是不是Jdom的一个BUG(Jdom 1.0,beta了10次的产物哦!).我google了一下,大家解决这个问题的办法无非是把Jdom的输出字符集改为GBK或者GB2312,但是这样就会有一些副作用,如果在没有特定字符集(GB