溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

[心得] 關(guān)于 JSON 中文問題

發(fā)布時間:2020-08-10 12:40:20 來源:ITPUB博客 閱讀:121 作者:shagoocn 欄目:編程語言

  忽然感覺很久沒上博了,今日上來一看居然將近一個月沒寫新文章了,再不“生產(chǎn)”兩篇,感覺也太對不起自己的博了。最近正好項目里有用到一些 JSON 的部分,于是今天就寫一點使用心得來與大家分享一下吧。

  說道 JSON 還真是一個好東西,一個字,就是“快”。前一段我把一個原先提供返回 XML 的服務(wù)改成 JSON 以后,速度竟然提高了將近 3 倍,特別是與前端 Ajax 客戶端集成使用,真可謂之“天作之合”。但是 JSON 對中文的支持一直以來為人們所詬病,網(wǎng)上關(guān)于這方面的問題也是一抓一大把,但是不要誤解,實際上這個問題并沒有想象的那么麻煩,以下石頭會通過一個實例來說明一下這個問題。

[@more@]

  廢話少說,代碼先行:

  client.php



JSON - TEST




Get Chat By Prototype

Get Chat By Self



  server.php :

include_once('JSON.php');

// create a new instance of Services_JSON
$json = new Services_JSON();

// convert a complexe value to JSON notation, and send it to the browser
$value = array('name' => 'stone', 'desc' => iconv('gb2312','utf-8','哈哈'), 'attach' => array(1, 2, 'baz'));
$output = $json->encode($value);

if (isset($_REQUEST['ret'])) {
// header('Content-type: text/x-json; charset=utf-8');
echo $output;
// prints: ["foo","bar",[1,2,"baz"],[3,[4]]]
} else {
header('X-JSON: ('.$output.')');
}

// accept incoming POST data, assumed to be in JSON notation
$input = file_get_contents('php://input', 1000000);
$value = $json->decode($input);
?>

  第一種方法我們把分析 JSON 返回信息的任務(wù)也全權(quán)交由“萬能”的 Prototype 來做,但是 Prototype 是通過自己定義的 HTTP Header 信息里的 X-JSON 頭來傳遞信息,而據(jù)我所知 IE 里的 HTTP Header 長度默認是有限制的,所以我還是推薦大家用第二種方法:用 parseJSON 方法來自助處理 JSON 的數(shù)據(jù),既簡單又有效 ... 分析好后就可以用了解析出來的 JavaScript Object 來做你想要做的排列咯 ... 說到中文問題,實際上也很簡單,只需要把要傳遞的數(shù)據(jù)做一下 utf-8 轉(zhuǎn)換即可,我這里用 php 做例子所以用 iconv 函數(shù)就可以了,Java 的話,更不用說了,編碼轉(zhuǎn)換就是他的強項呢。

  OK ... 寫完收工,下班回家,又是一個周末,Happy Time :)

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI