java 해석 php 함수 json_encode unicode 인코딩 문제

2987 단어 javaphpjson encode
android 개발 중 서버 인터페이스와 연결할 때 인코딩 문제가 발생했습니다. 서버 쪽에서 얻은 데이터는 "\u8bbe\u59071ID-\u8bbe\u59071\u540d\u79f0;\u8bbe\u59073id-\u8bbe\u59073\u54073\u79f0;\u8bbe\u59077id-\u59077\u540d\u79f0"인터페이스는 php 함수를 통해 json_인코딩을 한 후 클라이언트가java를 통해 되돌아옵니다.net.URLdecoder.decode () 디코딩은 사용할 수 없지만 상기 문자열을 decode () 방법으로 직접 복사하면 정상적으로 디코딩할 수 있습니다. 수신된 문자열을utf-8 인코딩을 거친 후 사용할 수 없습니다. 마지막으로 인터넷에서 관련 자료를 검색하여 해결 방법을 찾을 수 있습니다.
하나, json_encode 역할:
json_encode - 변수를 JSON 인코딩합니다.
설명:string json_encode($value),value 값의 JSON 형식을 반환합니다.
매개 변수: 인코딩할 value,resource 형식을 제외한 모든 데이터 형식
이 함수는 UTF-8 인코딩된 데이터만 사용할 수 있습니다(역주: 문자/문자열 유형의 데이터).
반환값: 인코딩이 성공하면 JSON 형식으로 표시된string을 반환합니다.
둘째, 클라이언트는 자바 언어로 디코딩합니다.
첫 번째 방법

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은 JSON 텍스트를 해석하고 생성하는 데 사용되는 간단한 Java 라이브러리입니다.다른 라이브러리에 의존하지 않고 성능이 높다.

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>

좋은 웹페이지 즐겨찾기