ホームページ >バックエンド開発 >PHPチュートリアル >PHP 配列によって JavaScript および json_encode_PHP に渡される gbk 中国語の文字化けコードの解決方法のチュートリアル
この記事では、PHP 配列を JavaScript と json_encode に渡すときに発生する gbk 中国語の文字化けの解決策を紹介します。以下は、JSON 関数の作成です。この段落は、インターネット上の某ヒーローからのものです。
コードをコピー | |
/*************************************************** * **********
*
$new_key = $function($key);
* |
コードをコピー | |||||||||||||
$dbcnx = @mysql_connect ( "localhost", "root", "1234" );
if (! $dbcnx) {
echo ("現時点ではジョーク " . "データベースが見つかりません。"); $q=mysql_query("ALV = 1 の能力から * を選択"); While($row=mysql_fetch_array($q)){
$array1[] = $row[AName]; |
コードは次のとおりです | コードをコピー |
|
JSON中国語文字化けコードに対する別の解決策
中国語の場合は注意してください
オンラインで解決策を見つけました:
コードは次のとおりです | コードをコピー |
| 標準 Base64 は、URL での直接送信には適していません。これは、URL エンコーダーが標準 Base64 の「/」と「+」文字を「%XX」の形式に変更し、これらの「%」文字が保存時に含まれるためです。 ANSI SQL では「%」記号がワイルドカード文字として使用されているため、データベースに変換する必要があります。
json_encode は utf-8 形式のデータのみを受け入れることができます
例: json_encode 処理後、「Xu」は「u80e5」になり、最終的な json の中国語部分は Unicode エンコーディングに置き換えられます。私たちが解決しなければならないのは、オブジェクトを json に変換し、オブジェクト内の中国語が json 内で通常の中国語として表示されるようにすることです。json_encode を使用するだけでは目標を達成できないようです。
私の解決策:最初にクラス内の中国語フィールドをURLエンコード(urlencode)し、次にオブジェクトをJSONエンコード(jsonencode)し、最後にJSON、つまり最後のJSONをURLデコード(urldecode)します。内部の中国語は依然として同じ中国語です!テストコードは次のとおりです:
コードをコピー
クラス myClass { | |
$this->item2 = urlencode($this->item2);
$str_json = json_encode($this);
// URL をデコードし、オブジェクト属性が変更されないように JSON に変換した後に各属性を返します
$this->item2 = urldecode($this->item2);
urldecode($str_json)を返します |