ホームページ  >  記事  >  バックエンド開発  >  中国語変換のための PHP json_encode 関数の正しい使用方法_PHP チュートリアル

中国語変換のための PHP json_encode 関数の正しい使用方法_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-15 13:32:53744ブラウズ

今日お届けするのは、中国語変換処理時のPHP json_encode関数の問題の解決策です。 json は非常に優れたデータ構造であり、現在ネットワーク データ送信で広く使用されています。

json_encode と json_decode

の 2 つの関数の具体的な使用法については、インターネット上に多くの関連記事があります。この記事では、主にその機能について紹介します。 json_encode ソリューションを使用するときに中国語を変換するには、この記事では、ファイルで使用されているエンコーディングが gb2312 であることを前提としています。

まず、必要な配列

  1. < ?PHP
  2. $ json = array (
  3. 0 =>)
  4. array (
  5. 'id' =) > '13'、
  6. '名前' = > '卓球'、
  7. )、
  8. 1 = >
  9. array (
  10. 'id' => ' 17'、
  11. '名前' = > 'バスケットボール'、
  12. )
  13. )
  14. ?> PHP json_encode を使用する場合直接関数
  15. <ol class="dp-xml">
    <li class="alt">
    <span class="tag"><</span> ?PHP   </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"><</span> ?PHP   </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 がエンコード コードのみをエスケープするためであり、上記のステートメントは最初にエンコードを変換する必要があります

<ol class="dp-xml">
<li class="alt">
<span class="tag"><</span> ?PHP   </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><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></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><span> ?=$this-</span><span class="tag">></span><span>baseUrl</span><span class="tag">?></span><span>/index/getajax",   </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">'< select>'</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">'< option value="'</span><span> <br />json[k]['id'] '"</span><span class="tag">></span><span>' <br>decodeURI(json[k]['name']) '</span><span class="tag"><</span><span> /option</span><span class="tag">></span><span>';   </span>
</li>
<li><span>});   </span></li>
<li class="alt">
<span class="attribute">html</span><span> =</span><span class="attribute-value">"< /select>"</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><span> /script</span><span class="tag">></span><span>   </span>
</li>
</ol>

上記のコードjsを使用すると、エンコーディングが標準を満たしていないというエラーが報告されます

その理由は、jsのdecodeURIがutf8トランスコーディングのみをサポートしているためです。したがって、PHPのjson_encode関数のコードは以下のコードになるはずです

<ol class="dp-xml">
<li class="alt">
<span class="tag"><</span> ?PHP   </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関数を使用する際に発生する問題の解決策です。

http://www.bkjia.com/PHPjc/446101.html

www.bkjia.com

tru​​e
http://www.bkjia.com/PHPjc/446101.html

技術記事今日紹介するのは、PHP の json_encode 関数が中国語への変換を処理する場合の問題の解決策です。 json は優れたデータ構造であり、現在インターネットで広く使用されています...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。