検索
ホームページphp教程php手册如何正确运用PHP json_encode函数进行中文转换

如何正确运用PHP json_encode函数进行中文转换

Jun 13, 2016 am 11:09 AM
encodejsonphp中国語のためにコンテンツ関数どうやって持ってくる私たちはい正しい変換する使用行為

我们今天将要为大家带来的内容是PHP json_encode函数在处理中文转换时出现问题的解决方法。json 是一个很好的数据结构现在已经广泛用在网络数据传输上,

json_encode 和 json_decode

这两个函数的具体用法 网上有很多相关的文章 ,本文主要介绍 用json_encode 时 中文无法转换的解决方案,本文假设文件所用的编码为gb2312;

先写出所需的数组

  1.  ?PHP   
  2. $json = array (   
  3. 0 =>   
  4. array (   
  5. 'id' => '13',   
  6. 'name' => '乒乓球',   
  7. ),   
  8. 1 =>   
  9. array (   
  10. 'id' => '17',   
  11. 'name' => '篮球',   
  12. )   
  13. )   
  14. ?> 

如果直接用PHP json_encode函数

<ol class="dp-xml">
<li class="alt"><span class="tag"> ?PHP   </span></li>
<li><span>echo json_encode($json);   </span></li>
<li class="alt">
<span class="tag">?></span><span>   </span>
</li>
<li><span> </span></li>
</ol>

结果为:

<ol class="dp-xml">
<li class="alt"><span class="tag"> ?PHP   </span></li>
<li><span>[{"id":"13","name":null}<br>,{"id":"13","name":null}]   </span></li>
<li class="alt">
<span class="tag">?></span><span>   </span>
</li>
<li><span> </span></li>
</ol>

可以看到汉字没有被转义 都为null,这是因为json仅仅转义encoding编码,故上面语句应该先转换编码

<ol class="dp-xml">
<li class="alt"><span class="tag"> ?PHP   </span></li>
<li>
<span>foreach ($ajax as $</span><span class="attribute">key</span><span>=</span><span class="tag">></span><span>$val)   </span>
</li>
<li class="alt"><span>{   </span></li>
<li><span>$ajax[$key]['name'] = <br>urlencode($val['name']);   </span></li>
<li class="alt"><span>}   </span></li>
<li><span>echo json_encode($json);   </span></li>
<li class="alt">
<span class="tag">?></span><span>   </span>
</li>
</ol>

客户端js代码

<ol class="dp-xml">
<li class="alt"><span><span class="tag"><span> </span><span class="tag-name">script</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"text/javascript"</span><span class="tag">></span><span>   </span></span></span></li>
<li><span>function getsort(obj)   </span></li>
<li class="alt"><span>{   </span></li>
<li><span>$.ajax(   </span></li>
<li class="alt"><span>{   </span></li>
<li><span>type : "GET",   </span></li>
<li class="alt">
<span>url : "</span><span class="tag"><span> ?=$this-</span><span class="tag">></span><span>baseUrl</span><span class="tag">?></span><span>/index/getajax",   </span></span>
</li>
<li>
<span>data : "</span><span class="attribute">c</span><span>=" obj.value,   </span>
</li>
<li class="alt"><span>success : function(json)   </span></li>
<li><span>{   </span></li>
<li class="alt">
<span>var </span><span class="attribute">json</span><span>=</span><span class="attribute-value">eval</span><span>(json);   </span>
</li>
<li>
<span>var </span><span class="attribute">html</span><span> = </span><span class="attribute-value">''</span><span>;   </span>
</li>
<li class="alt"><span>$.each(json, function(k)   </span></li>
<li><span>{   </span></li>
<li class="alt">
<span class="attribute">html</span><span> = </span><span class="attribute-value">'<span> <br>json[k]['id'] '"</span><span class="tag">></span><span>' <br>decodeURI(json[k]['name']) '</span><span class="tag"><span> /option</span><span class="tag">></span><span>';   </span></span></span>
</li>
<li><span>});   </span></li>
<li class="alt">
<span class="attribute">html</span><span> =</span><span class="attribute-value">""</span><span>;   </span>
</li>
<li><span>$('#sort').html(html);   </span></li>
<li class="alt"><span>}   </span></li>
<li><span>}   </span></li>
<li class="alt"><span>)   </span></li>
<li><span>}   </span></li>
<li class="alt"><span class="tag"><span> /script</span><span class="tag">></span><span>   </span></span></li>
</ol>

用上面的代码js会报错 说编码不符合标准

原因是因为js 中decodeURI 仅仅支持utf8 转码。所以 ,PHP json_encode函数的代码应该为下面的代码

<ol class="dp-xml">
<li class="alt"><span class="tag"> ?PHP   </span></li>
<li>
<span>foreach ($ajax as $</span><span class="attribute">key</span><span>=</span><span class="tag">></span><span>$val)   </span>
</li>
<li class="alt"><span>{   </span></li>
<li><span>$ajax[$key]['name'] = <br>urlencode(iconv('gb2312',<br>'utf-8',$val['name']));   </span></li>
<li class="alt"><span>}   </span></li>
<li><span>echo json_encode($json);   </span></li>
<li class="alt">
<span class="tag">?></span><span>   </span>
</li>
<li><span> </span></li>
</ol>

以上就是使用PHP json_encode函数在实际操作中出现问题的解决方法。


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール