首頁 >後端開發 >PHP問題 >android給php中文亂碼怎麼辦

android給php中文亂碼怎麼辦

藏色散人
藏色散人原創
2022-10-24 09:33:531694瀏覽

android給php中文亂碼的解決方法:1、打開對應php檔;2、在「json_encode」之前,把所有陣列內所有內容都用「urlencode()」處理一下;3、用「 json_encode()」轉換成json字串;4、用「urldecode()」將編碼過的中文轉回來即可。

android給php中文亂碼怎麼辦

本教學操作環境:windows7系統、PHP8.1版、Dell G3電腦。

android給php中文亂碼怎麼辦?

一、Android本身是無法直接存取mysql資料庫的,需要藉助於PHP網頁才能完成對mysql資料庫的操作。而PHP和Android之間交換資料需要使用JSON格式。

二、什麼是json

    21世紀初,Douglas Crockford尋找簡單的資料交換格式,能夠在伺服器之間交換資料。當時通用的資料交換語言是XML,但Douglas Crockford覺得XML的產生和解析都太麻煩,所以他提出了一個簡化格式,也就是Json。

    Json的規格非常簡單,只用一個頁面幾百個字就能說清楚,而且Douglas Crockford聲稱這個規格永遠不必升級,因為該規定的都規定了。

    1) 並列的資料之間以逗號(", ")分隔。

    2) 對映以冒號(": ​​")表示。

    3) 並列資料的集合(陣列)以方括號("[]")表示。

    4) 映射的集合(物件)以大括號("{}")表示。

    上面四條規則,就是Json格式的所有內容。

例如,下面這句話:

"北京市的面積為16800平方公里,常住人口1600萬人。上海市的面積為6400平方公里,常住人口1800萬。

寫成json格式就是這樣:

[  {"城市":"北京","面积":16800,"人口":1600},  {"城市":"上海","面积":6400,"人口":1800}]

如果事先知道資料的結構,上面的寫法還可以進一步簡化:

[  ["北京",16800,1600],  ["上海",6400,1800]]

由此可以看到,json非常易學易使用。所以,在短短幾年中,它就取代xml,成為了互聯網上最受歡迎的數據交換格式。

三、PHP中JSON中文亂碼

    在php 中使用json_encode() 內建函數(php > 5.2)可以使用得php 中資料可以與其它語言很好的傳遞並且使用它。這個函數的功能是將數值轉換成json資料儲存格式。

<?php
$arr = array( &#39;Name&#39;=>&#39;希亚&#39;,&#39;Age&#39;=>20);
$jsonencode = json_encode($arr);
echo $jsonencode;
?>

程式運行結果如下:

android給php中文亂碼怎麼辦

陣列中的中文在json_encode之後出現了\u5e0c\u4e9a之類的亂碼。

#解決方法是用urlencode ()函數處理以下,在json_encode之前,把所有數組內所有內容都用urlencode()處理一下,然用json_encode()轉換成json字串,最後再用urldecode()將編碼過的中文轉回來。

<?php 
/**************************************************************
* 
*
使用特定function对数组中所有元素做处理 
* @param string &$array 要处理的字符串
* @param string $function 要执行的函数 
* @return boolean $apply_to_keys_also 是否也应用到key上 
* @access public 
* 
*************************************************************/ 
function arrayRecursive(&$array, $function, $apply_to_keys_also = false) 
{    
static $recursive_counter = 0;    
if (++$recursive_counter > 1000) 
{        
die(&#39;possible deep recursion attack&#39;);    
}    
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--; 
} 
/************************************************************** 
* 
* 将数组转换为JSON字符串(兼容中文)
* @param array $array 要转换的数组 
* @return string 转换得到的json字符串
* @access public 
* 
*************************************************************/ 
function JSON($array) 
{ 
arrayRecursive($array, &#39;urlencode&#39;, true); 
$json = json_encode($array);
 return urldecode($json); 
} 
 $array = array ( &#39;Name&#39;=>&#39;希亚&#39;,&#39;Age&#39;=>20); 
 echo JSON($array);
?>

這次程式碼成功運行了

android給php中文亂碼怎麼辦

推薦學習:《PHP影片教學

以上是android給php中文亂碼怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn