ホームページ バックエンド開発 PHPの問題 php ajaxで中国語の文字化けコードを解決するにはどうすればよいですか?

php ajaxで中国語の文字化けコードを解決するにはどうすればよいですか?

Nov 06, 2020 am 10:54 AM
ajax php 中国語文字化け

解決策: 1. すべてのデータは、データベース エンコード、php エンコード、フロントエンド エンコードを含む utf-8 エンコードを均一に使用します; 2. json_encode()、urlencode() を使用して各文字を個別にエンコードし、次に使用しますurldecode() 関数はデコードを実行し、値を返します。

php ajaxで中国語の文字化けコードを解決するにはどうすればよいですか?

推奨: 「PHP ビデオ チュートリアル

php では、データベースからデータを抽出した後、通常、一度に複数行のデータを抽出します。フロントエンド js が ajax を使用してバックエンドと対話する場合、php は 1 つのデータのみをエコーできますが、複数のデータがあるため、渡すことができる配列は 1 つだけです。これは json_encode を使用します()関数。json_encode()関数はデータをjsonデータに変換することを意味します。

php 配列の変換方法を見てみましょう:

まず、php で 2 つの配列を作成します。1 つは中国語を含み、もう 1 つは数字または英語を含み、最後に出力を見てみましょう。アイデア: 関連する値はより直感的です

$gg=array('a'=>'中国','b'=>'日本','c'=>'美国','d'=>'加拿大','e'=>'法国');
$yy=array('f'=>'6','g'=>'7','h'>='8','i'=>'tom','j'=>'kevin');

配列の 1 つだけを出力します:

echo $json=json_encode($gg);

出力結果は次のとおりです

{"a":"\u4e2d\u56fd","b":"\u65e5\u672c","c":"\u7f8e\u56fd","d":"\u52a0\u62ff\u5927","e":"\u6cd5\u56fd"}

両方に中かっこがあります

2 つの配列を 1 つの配列に入れて同時に出力します。

echo $json=json_encode(array($gg,$yy));
出力結果は次のとおりです。配列内の配列が json でフォーマットされた後、データは [] 角​​括弧で囲まれ、内部の配列は {} 中括弧で囲まれていることがわかりますが、依然として文字化けしています。

コード文字化けの問題には 2 つの方法があります。

方法 1: エンコーディングを含め、すべてのデータを一律に utf-8 でエンコードするデータベースからの PHP コーディングとフロントエンド コーディング。

方法 2: 次の関数を使用して各文字を個別にエンコードします: (一部の記号はエスケープに失敗しているようです。そのため、この方法の使用はお勧めできません)

[{"a":"\u4e2d\u56fd","b":"\u65e5\u672c","c":"\u7f8e\u56fd","d":"\u52a0\u62ff\u5927","e":"\u6cd5\u56fd"},{"f":"6","g":"7","0":true,"i":"tom","j":"kevin"}]

これら 2 つの関数を使用した後の出力結果は次のとおりです:

function JSON($array) { 
    arrayRecursive($array, 'urlencode', true); 
    $json = json_encode($array); 
    return urldecode($json); 
}

	function arrayRecursive(&$array, $function, $apply_to_keys_also = false){ 
    static $recursive_counter = 0; 
    if (++$recursive_counter > 1000) { 
        die('possible deep recursion attack'); 
    } 
    foreach ($array as $key => $value) { 
        if (is_array($value)) { 
            arrayRecursive($array[$key], $function, $apply_to_keys_also); 
        } else { 
            $array[$key] = $function($value); 
        }                                        
        if ($apply_to_keys_also && is_string($key)) { 
            $new_key = $function($key); 
            if ($new_key != $key) { 
                $array[$new_key] = $array[$key]; 
                unset($array[$key]); 
            } 
        } 
    } 
    $recursive_counter--; 
}
プログラミング関連の知識の詳細については、「プログラミング入門

」を参照してください。 !

以上がphp ajaxで中国語の文字化けコードを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Stock Market GPT

Stock Market GPT

AIを活用した投資調査により賢明な意思決定を実現

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPを使用してデータベースでレコードを更新する方法は? PHPを使用してデータベースでレコードを更新する方法は? Sep 21, 2025 am 04:47 AM

toupdateadatabaserecordinphp、firstconnectusingpdoormysqli、thenuseprepreadedStatementStoeaseaseesecuresQlupDateQuery.example:$ pdo = newpdo( "mysql:host = localhost; dbname = your_database"、$ username、$ username、$ sibsfar

PHPでファイルアクセス許可を確認する方法は? PHPでファイルアクセス許可を確認する方法は? Sep 22, 2025 am 06:27 AM

usefileperms()togetfilepermissionsisanintegerandformatitusingsprintf( '%o')todisplayunix-stylepermissionslike0644

PHPスクリプトでコマンドライン引数を取得する方法は? PHPスクリプトでコマンドライン引数を取得する方法は? Sep 22, 2025 am 06:19 AM

$ argvと$ argcを使用して、phpコマンドラインパラメーターを取得します。 $ argcはパラメーターの数であり、$ argvはパラメーター配列です。たとえば、phpsscript.phphelloworld、$ argv = ['script.php'、 'hello'、 'world']; $ argv [1]などを使用して、特定のパラメーターにアクセスします。 getopt()を使用して、短いオプション(-f)と長いオプション( - ファイル)を複雑なシナリオで処理します。

PHPにシングルトンパターンを実装する方法は? PHPにシングルトンパターンを実装する方法は? Sep 25, 2025 am 12:27 AM

Singleton Patternは、クラスに1つのインスタンスしかないことを保証し、単一のオブジェクトがデータベース接続や構成管理などのシステムの動作を調整するシナリオのグローバルアクセスポイントを提供します。 2。その基本構造には、プライベート静的属性ストレージインスタンス、プライベートコンストラクターが外部の作成を防ぎ、プライベートクローニング方法がコピーを防止し、インスタンスを取得するためのpublic staticメソッド(getInstance()など)が含まれます。 3. getInstance()メソッドを呼び出してPHPで一意のインスタンスを取得し、何回呼び出されても同じオブジェクト参照を返します。 4.標準のPHPリクエストモデルでは、スレッドの安全性を考慮する必要はありませんが、同期の問題は長期的またはマルチスレッド環境で注意を払う必要があり、PHP自体はネイティブロックメカニズムをサポートしていません。 5。シングルトンは便利ですが、

PHPでnull coulescingオペレーター(??)を使用する方法は? PHPでnull coulescingオペレーター(??)を使用する方法は? Sep 25, 2025 am 01:28 AM

回答:PHPの空のマージ演算子(??)は、変数キーまたは配列キーが存在し、nullではないかどうかを確認するために使用されます。それが本当なら、それはその値を返し、それ以外の場合はデフォルト値を返します。長いISSET()チェックの使用を回避し、$ username = $ userInput ?? 'guest'などの未定義の変数や配列キーの処理に適しています。

PHPでURLパラメーターを取得する方法は? PHPでURLパラメーターを取得する方法は? Sep 24, 2025 am 05:11 AM

$ _getを使用して、?name = john&age = 25などのURLパラメーターを取得します。 ISSETまたは空のマージオペレーターを介して存在を確認し、Filter_Inputでデータをフィルタリングおよび検証して、セキュリティを確保します。

PHPでzipファイルを作成する方法は? PHPでzipファイルを作成する方法は? Sep 22, 2025 am 06:06 AM

usetheziparchiveclasstocreateazipfileinphpbyinptinatingtheobject、openthearchivewithopen()、addingfilesviaaddfile()oraddfromstring()、およびclosingitwithclose()tosave;

PHPでJSONオブジェクトを作成する方法は? PHPでJSONオブジェクトを作成する方法は? Sep 22, 2025 am 04:13 AM

json_encode()関数を使用して、PHPアレイまたはオブジェクトをJSON文字列に変換します。たとえば、連想配列["name" => "john"、 "age" => 30、 "city" => "newyork"] outputs {"name": "john"、 "age":30、 "city": "newyork&

See all articles