今日お届けするのは、中国語変換処理時のPHP json_encode関数の問題の解決策です。 json は非常に優れたデータ構造であり、現在ネットワーク データ送信で広く使用されています。
json_encode と json_decode
の 2 つの関数の具体的な使用法については、インターネット上に多くの関連記事があります。この記事では、主にその機能について紹介します。 json_encode ソリューションを使用するときに中国語を変換するには、この記事では、ファイルで使用されているエンコーディングが gb2312 であることを前提としています。まず、必要な配列<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.htmlwww.bkjia.comtrue