當前位置:首頁 » 編程語言 » phpjson中文

phpjson中文

發布時間: 2022-06-06 07:46:05

1. 如何解決使用php導出json數據 中文亂碼

header("Content-type:application/vnd.ms-excel");

header("Content-Disposition:attachment;filename=users.xls");$string.="序號"." ";
$string.="姓名"." ";

$string.="電話"." ";

$string.="email"." ";
$string.="時間"." ";
$string.=" ";


while($val=$dsql->GetArray()){
$string.=$val[id]." ";
$string.=$val[username]." ";
$string.=$val[tel]." ";
$string.=$val[email]." ";
if(isset($val['mtime'])){
$string.=GetDateTimeMk($val['mtime'])." ";
}else{
$string.=$val['mtime']." ";
}

//$string.=$val[user_money]." ";
$string.=" ";
}
echoiconv("UTF-8","GB2312",$string);
這是導出表格excle

2. php如何輸出中文json格式字元串

php如何輸出中文json格式字元串
如何對json格式的字元串進行轉換,php提供了兩個函數:
json_encode 對變數進行 JSON 編碼
json_decode 對 JSON 格式的字元串進行編碼

下面看個實例:
$arr = ['a', 'b', 'c'];echo json_encode($arr);

輸出為:
["a","b","c"]

但是,當我們在數組中放入中文的時候,就會出現問題:
$arr = [ '世界', '你好',
];echo json_encode($arr);

輸出的結果為:
["\u4e16\u754c","\u4f60\u597d"]

這個結果顯然不是我們想要的,但是為什麼出現這個呢?
因為當我們的值中包含中文時,php對他進行json編碼時底層會對中文進行unicode編碼,導致結果不可讀,那該怎麼解決呢?
方法一
可以利用 urlencode 和 urldecode 方法繞過這個轉碼為 unicode 的過程,先將中文欄位進行urlencode,然後json_encode,最後再用urldecode處理結果,便可以正常顯示中文。具體代碼如下:
$arr = [ '世界', '你好',
];echo urldecode(json_encode(array_map('urlencode', $arr)));

輸出結果為:
["世界","你好"]

方法二
自PHP5.4版本,官方就已經給Json新增了一個選項: JSON_UNESCAPED_UNICODE。加上這個選項後,就不會自動把中文編碼了。具體代碼如下:
$arr = [ '世界', '你好',
];echo json_encode($arr, JSON_UNESCAPED_UNICODE);
["世界","你好"]

看吧,這才是我們想要的結果 :)

3. php json 輸出中文亂碼的問題怎麼處理啊,謝謝

header("Content-Type:text/html;charset=UTF-8");

$arr=array('1','2','三');

echo$arr['2']."<br/>";

print_r($arr);

echo"<br/>";

print_r(json_encode($arr));

echo"<br/>";

print_r(json_decode(json_encode($arr)));


輸出json數據會有但是翻譯成數組後就行了

4. php怎麼將數組轉換為json而不會使中文出現亂碼

如果頁面都是utf-8編碼,一般不會出現亂碼,如果不是utf-8,先轉為utf-8。
如果想要轉換的json中的中文可讀的話,在json_encode之前,把所有數組內所有內容都用urlencode()處理一下,然用json_encode()轉換成json字元串,最後再用urldecode()將編碼過的中文轉回來。

5. PHP如何正常轉換中文json格式字元串

在 php 中使用 json_encode() 內置函數(php > 5.2)可以使用得 php 中數據可以與其它語言很好的傳遞並且使用它。這個函數的功能是將數值轉換成json數據存儲格式,但是轉換後的中文會變成Unicode編碼。
[php] view plainprint?
<?php
$arr = array
(
'Name'=>'希亞',
'Age'=>20
);

$jsonencode = json_encode($arr);
echo $jsonencode;
?>
程序運行結果如下:
[php] view plainprint?
{"Name":null,"Age":20}
json_encode 函數中中文被編碼成 null 了,Google 了一下,很簡單,為了與前端緊密結合,Json 只支持 utf-8 編碼,我認為是前端的 Javascript 也是 utf-8 的原因。
[php] view plainprint?
<?php
$array = array
(
'title'=>iconv('gb2312','utf-8','這里是中文標題'),
'body'=>'abcd...'
);

echo json_encode($array);
?>

6. phpmysql生成json中文亂碼

你好,這是json對中文處理後的編碼,不屬於亂碼,如果不想它編碼可以在json_encode的第二個參數加
JSON_UNESCAPED_UNICODE

json_encode($var,JSON_UNESCAPED_UNICODE);

7. php 輸出json及顯示json中的中文漢字詳解及實例

php
輸出json及顯示json中的中文漢字
在php中,我們經常需要將數組輸出json,只需要使用json_encode函數處理一下數組即可,但有的時候數組裡面有中文,使用json_encode函數處理後中文字元被編碼成了Unicode,如何才能在json中顯示中文呢?請看下文。
首先介紹一下php輸出json格式:
一種最簡單的用法,就是把數組直接輸出為json,如下:
<?php
$arr
=
array('p1'=>'ni"hao','p2'=>2,'ch'=>'碼農你好!');
$json
=
json_encode($arr);
echo
$json;
?>
輸出的結果為:
{"p1":"ni\"hao","p2":2,"ch":"\u7801\u519c\u4f60\u597d\uff01"}
這里要注意:
雙引號在json中會被自動編碼為\",這個很好理解,js中字元串中是不允許出來單引號、雙引號和反斜杠的。
中文字元被編碼成了Unicode
如果是寫介面,那直接這樣輸出就夠了,中文無需去做處理。等到了客戶端,再去把Unicode的中文轉成漢字即可。但如果要在伺服器端直接輸出漢字出來,那我們可以做如下處理。
<?php
$arr
=
array('p1'=>'nihao','p2'=>2,'ch'=>'碼農你好!');
$json
=
json_encode($arr);
echo
decodeUnicode($json);
function
decodeUnicode($str){
return
preg_replace_callback('/\\\\u([0-9a-f]{4})/i',
create_function(
'$matches',
'return
mb_convert_encoding(pack("H*",
$matches[1]),
"UTF-8",
"UCS-2BE");'
),
$str);
}
?>
輸出:
{"p1":"ni\"hao","p2":2,"ch":"碼農你好!"}
這個操作很簡單,其實就是把輸出結果匹配一下,把Unicode還原成了漢字。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

8. PHP JSON格式的中文顯示問題解決方法

返回json數據中文顯示的問題
上一篇文章中,返回json格式的中文顯示成\u5723\u8bde\u8282\u5343\u4e07\u597d\u793c\u5927\u5949\u9001
解決方法一:
復制代碼
代碼如下:
<?php
function
Notice(){

include
'./include/conn.php';
//資料庫鏈接文件

$sql_notice
=
mysql_query('SELECT
*
FROM
gg_notice
where
enable
=
"1"
limit
0,10');

$notice
=
mysql_fetch_array($sql_notice,
MYSQL_ASSOC);

$str
=
json_encode($notice);

//linux

return
preg_replace("#\\\u([0-9a-f]{4})#ie",
"iconv('UCS-2BE',
'UTF-8',
pack('H4',
'\\1'))",
$str);

//windows

//return
preg_replace("#\\\u([0-9a-f]{4})#ie",
"iconv('UCS-2LE',
'UTF-8',
pack('H4',
'\\1'))",
$str);

}
?>
另外從網上搜索到的其他方法
復制代碼
代碼如下:
<?php
/**
*
json
生成,分析
支持中文
*/
class
Json_Helper
{

/**

*
生成json

*/

public
static
function
encode($str){

$json
=
json_encode($str);

//linux

return
preg_replace("#\\\u([0-9a-f]{4})#ie",
"iconv('UCS-2BE',
'UTF-8',
pack('H4',
'\\1'))",
$json);

//windows

//return
preg_replace("#\\\u([0-9a-f]{4})#ie",
"iconv('UCS-2LE',
'UTF-8',
pack('H4',
'\\1'))",
$json);

}

/**

*
分析json

*/

public
static
function
decode($str)
{

return
json_decode($str);

}
}
?>

9. PHP中json_encode中文亂碼問題

php 中使用 json_encode() 內置函數(php > 5.2)可以使用得 php 中數據可以與其它語言很好的傳遞並且使用它。這個函數的功能是將數值轉換成json數據存儲格式
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
//結果
//{"a":1,"b":2,"c":3,"d":4,"e":5}
/*
下面看一款json_encode中文亂碼問題
解決方法是用urlencode()函數處理以下,在json_encode之前,把所有數組內所有內容都用urlencode()處理一下,然用json_encode()轉換成json字元串,最後再用urldecode()將編碼過的中文轉回來
*/
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--;
}
/**************************************************************
*
* 將數組轉換為json字元串(兼容中文)
* @param array $array 要轉換的數組
* @return string 轉換得到的json字元串
* @access public
*
*************************************************************/
function json($array) {
arrayrecursive($array, 'urlencode', true);
$json = json_encode($array);
return urldecode($json);
}
$array = array
(
'name'=>'希亞',
'age'=>20
);
echo json($array);
//應用實例
$servname="localhost";
$sqlservname="root";
$sqlservpws="123456";
$sqlname="lock1";
$db=mysql教程_connect($servname,$sqlservname,$sqlservpws) or die("資料庫教程連接失敗");
mysql_select_db($sqlname,$db);
$sql = "select * from t_operater";
$result =mysql_query($sql);
$rows = mysql_num_rows($result);
while($obj = mysql_fetch_object($result))
{
$arr[] = $obj;
}
echo '({"total":"'.$rows.'","results":'.json_encode($arr).'})';

熱點內容
c語言賦值後 發布:2025-02-08 21:08:40 瀏覽:755
dosphp 發布:2025-02-08 21:01:27 瀏覽:702
sm3雜湊演算法 發布:2025-02-08 20:55:00 瀏覽:285
抽獎源碼帶後台 發布:2025-02-08 20:33:54 瀏覽:225
歐博中央空調原始密碼是多少 發布:2025-02-08 20:33:47 瀏覽:335
運動使人快樂緩解壓力 發布:2025-02-08 20:27:01 瀏覽:98
linux命令大文件 發布:2025-02-08 20:25:06 瀏覽:897
C蟻群演算法 發布:2025-02-08 20:21:25 瀏覽:513
私人搭建伺服器能幹嘛 發布:2025-02-08 20:21:24 瀏覽:596
網吧怎麼通過伺服器玩網路游戲 發布:2025-02-08 19:59:52 瀏覽:916