日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php 汉字处理 json,php处理json时中文问题的解决方法

發布時間:2025/3/20 php 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 汉字处理 json,php处理json时中文问题的解决方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

php處理json時中文問題的解決方法

在項目里面用到json操作,之前測試都是很正常的,但有時候把對象轉換成json的時候,其中有個中文屬性變成了null.遇到這種情況怎么辦呢?下面小編為大家整理了php處理json時中文問題的解決方法,希望能幫到大家!

操作的代碼如下:

復制代碼 代碼如下:

$usr = new User();

echo json_encode($usr);

?>

很簡單的代碼,無中文情況一切正常,輸出如下:

{"PlatformID":"123213","UserID":"1023"}

一旦有中文的時候會出現兩種情況。

第一種情況是對象本身的某個值為中文的屬性是utf-8編碼,則會有如下輸出:

{"PlatformID":"123213","UserID":"1023","UserName":"u00b7u00f0u00b5u00b2u00c9u00b1u00b7u00f0u00ccu00fc"}

其中的UserName是非人類語言,這個是正常的,如果我們用firebug看下就是中文的。(這個糾結了我半天)

第二種情況是非utf-8編碼,輸出會變成null:

{"PlatformID":"123213","UserID":"1023","UserName":null}

很奇怪,查了手冊后知道json_encode是只對utf-8有效,其它編碼均會變為null.

下面就開始解決編碼轉化的問題。

在php.net上看到別人的`函數如下:

復制代碼 代碼如下:

private function to_utf8($in)

{

if (is_array($in)) {

foreach ($in as $key => $value)

{

$out[$this->to_utf8($key)] = $this->to_utf8($value);

}

}

elseif(is_string($in))

{

if(mb_detect_encoding($in) != "UTF-8")

return utf8_encode($in);

else

return $in;

}

else

{

return $in;

}

return $out;

}

于是拿下來轉換編碼發現已經不為null.欣喜之下用firebug打開,發現并不是我原來的中文字符....開始糾結......

難道是要讓他轉換成原來的編碼?回去尋找原始編碼......

測試開始:

1.把$usr->UserName直接輸出,頁面頭設置charset=utf-8.亂碼

2.echo json_encode($usr)輸出UserName=null

3.頁面頭設置為charset=gbk,輸出正確->可以確定原編碼為gbk

最后通過IE,Chrome,Firefox測試得出結論:

1.保證頁面字符集與數據庫一致,輸出一定正常 。

2.做json_encode時保證數據編碼是utf-8,json_decode正常。

3.如果要對非utf-8字符做json_encode,先轉換成utf-8。

4.對非utf-8字符做json_decode的時候,千萬不能忘記轉換成原先的編碼,否則會輸出亂碼!

【php處理json時中文問題的解決方法】相關文章:

總結

以上是生活随笔為你收集整理的php 汉字处理 json,php处理json时中文问题的解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。