php json encode 中文亂碼解決方法

2022-05-21 08:34:03 字數 2145 閱讀 1966

本文列舉3個方法,實現json_encode()後的string顯示中文問題。

做介面時不需要,但存log時幫了大忙了。

value待編碼的value,除了

resource 型別之外,可以為任何資料型別

該函式只能接受 utf-8 編碼的資料

options由以下常量組成的二進位制掩碼:json_hex_quot,json_hex_tag,json_hex_amp,json_hex_apos,json_numeric_check,json_pretty_print,json_unescaped_slashes,json_force_object,json_unescaped_unicode.

編碼成功則返回乙個以 json 形式表示的 string 或者在失敗時返回false

1

<?php2//

json_encode() 保持中文方法詳解34

$arr['city'] = '北京';

5$arr['name'] = 'weilong';67

//直接輸出

8// res:

9echo json_encode($arr), "\n";

1011

#### 1. 加引數,php版本》=5.4

12// res:

13echo json_encode($arr, json_unescaped_unicode), "\n"; //

php >= 5.4

1415

#### 2. 正則替換,json_encode後,正則將編碼替換成中文

16// res:

17echo

preg_replace("#\\\u([0-9a-f])#ie", "iconv('ucs-2be', 'utf-8', pack('h4', '\\1'))", json_encode($arr)), "\n"; //

php 5.5 /e修飾符被棄用

18echo

preg_replace_callback("/\\\u([0-9a-f])/i", function($match) \"", true

);20 }, json_encode($arr)), "\n";

2122

#### 3. urldecode()、urlencode()函式,不推薦

23// res1: null, res2:

24echo

urldecode(json_encode(urlencode($arr))), "\n";

25$arr['city'] = urlencode($arr['city']); //

urlencode()引數必須是string

26echo

urldecode(json_encode($arr)), "\n";

2728

29//

另外注意json_decode()引數區別。

30$arr['city'] = '北京';

31$arr['name'] = 'weilong';

32$str = json_encode($arr

);33

$str2 = json_decode($str

);34

$str3 = json_decode($str, true

);35

36print_r($str2); //

object

37/*

res:

38stdclass object39(

40[city] => 北京

41[name] => weilong

42)

*/43

44print_r($str3); //

array

45/*

res:

46array47(

48[city] => 北京

49[name] => weilong50)

51*/

PHP json encode 中文亂碼

在編碼過程中 經常會用到json encode來處理中文 但是 出現乙個問題 中文都會被轉碼 變為 u 的格式 如何避免被轉碼 1 php的版本為5.4以上 1 echo json encode 中文 u4e2d u6587 2 echo json encode 中文 json unescaped ...

PHP json encode 中文亂碼

在編碼過程中 經常會用到json encode來處理中文 但是 出現乙個問題 中文都會被轉碼 變為 u 的格式 如何避免被轉碼 1 php的版本為5.4以上 1 echo json encode 中文 u4e2d u6587 2echo json encode 中文 json unescaped u...

PHP json encode 不支援中文的問題

今天用乙個包含中文的陣列轉json的時候發現存在問題 string u8d3a u54f2 u54f2 u6731 u6653 u745e u674e u946b u66fe u7ef4 u59ae 網上找了很多,大多數都是錯的,最後終於找到乙個對的,記錄下來吧!正確的方法是在json encode...