本文列舉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...