json_encode を使用した後、PHP では中国語で null が表示される
PHP JSON null
次の配列があります:Array( [0] => Array ( [name] => 192.168.1.250 [id] => 3232236026 [items] => Array ( [defualt] => Array ( [parentNode] => 3232236026 [name] => 请选择接口 [id] => 0 ) [0] => Array ( [parentNode] => 3232236026 [name] => LAN0(内网) [id] => em0 ) [1] => Array ( [parentNode] => 3232236026 [name] => LAN1(外网) [id] => em1 ) ) ))
解析する前に mb_convert_encoding() を使用して utf-8 に変更しました
json_encode で解析した後、Linux で php xxx.php を使用して直接実行しました正しい結果を取得できます:
[{"name":"192.168.1.250","id":"3232236026","items":{"defualt":{"parentNode":"3232236026","name" :" u8bf7u9009u62e9u63a5u53e3","id":"0"},"0":{"parentNode":"3232236026","name":"LAN0(u5185u7f51)","id":"em0"},"1" :{ "parentNode":"3232236026","name":"LAN1(u5916u7f51)","id":"em1"}}}]
しかし、Firefox の Web コンソールで開いた後、得られた結果は次のとおりでした。
[{"name":"192.168.1.250","id":"3232236026","items":{"defualt":{"parentNode":"3232236026","name":"u8bf7u9009u62e9u63a5u53e3","id" : "0"},"0":{"parentNode":"3232236026","name":null,"id":"em0"},"1":{"parentNode":"3232236026","name" : null,"id":"em1"}}}]
上記の「インターフェイスを選択してください」という文字列はphpに直接入力されており、「LAN1(外部ネットワーク)」は私がファイルで取得したものです。何か違いますか?どうやって解決すればいいでしょうか?
ディスカッションへの返信 (解決策)
1. json_encode は utf-8 データのみを処理できます (名前空間を使用して再定義できます)
2. php プログラムは utf-8 なので、「インターフェイスを選択してください」はエンコーディングを通じて行うことができます
3. データ ファイルは utf-8 ではないため、「LAN1 (外部ネットワーク)」などをエンコードできません
解決策は、データ ファイルを utf-8 エンコードで保存することです
1L への返信、
私の編集環境はすべてgbkなので、PHPで編集時に「インターフェースを選択してください」と直接入力し、mb_convert_encoding()を使ってutf-8に変更しました
「LAN1(外部ネットワーク)」は同じです。別のファイルから取得するので、mb_convert_encoding() を使用して utf-8 に変更しました。
それで、php ファイル php xxx.php を実行すると、それを渡して正しい結果 LAN1 (u5916u7f51) を得ることができます。Firefox Web コンソールで開くと、結果は Null です。
Baidu で検索したところ、誰かがそのファイルは c を使用して生成され、次の内容が含まれていると言った
[root@localhost php]# php select_for_interface.php
PHP 警告: ディレクティブ 'register_globals' は PHP 5.3 以降、行 0 の Unknown では非推奨です
czoyODM6Ilt7Im5hbWUiOiIxOTIuMTY4LjE uMjUwIiwiaWQiOiIzM jMyMjM2MDI2IiwiaXRlbXMiOnsiZGVmdWFsdCI6eyJwYXJlbnROb2RlIjoiMzIzMjIzNjAyNiIsIm5hbWUiOiJcdThiZjdcdTkwMDlcdTYyZTlcdTYzYTVcdTUzZTMiLCJp ZCI6IjAifSwiMCI6eyJwYXJlbnRO b2RlIjoiMzIzMjIzNjayNiIsIm5hbWUiOiJMQU4wKFx1NTE4NVx1N2Y1MSkiLCJpZCI6ImVtMCJ9LCIxIjp7InBhcmVudE5vZGUIOizMjMyMjM2MDI2Ii wibmFtZSI6IkxBTjEoXHU1OTE2XH U3ZjUxKSIImlkIjoiZW0xIn19fV0iOw==
[{"名前":"192.168 .1.250", "id":"3232236026","items":{"defualt":{"parentNode":"3232236026","name":"u8bf7u9009u62e9u63a5u53e3","id":"0"},"0" :{"親ノード ":"3232236026","名前":"LAN0(u5185u7f51)","id":"em0"},"1":{"親ノード":"3232236026","名前":"LAN1( u5916u7f51)", "id":"em1"}}}]
[root@localhost php]#
上記は私の操作結果です。この結果は正常に見えますが、ブラウザで開くと異常です:
czoyNTE6Ilt7Im5hbWUiOiIxOTIUMTY4LjeumjUwIiwiaWQiOizMjMyMjM2MDI2IiwiaXRlbXMiOnsiZGVmdWFsdCI6eyJwYXJlbnROb2RlIjoiMzIzMjIzNjayNiIsIm5hbWUiO IJcdThiZjdcdTkwMDlcdTYyZTlcdTYzYTVcdTUzZTMiLCJpZCI6IjAifSwiMCI6eyJwYXJlbnROb2RlIjoiMzIzMjIzNjayNiIsIm5hbWUiOm51bGwsImlkIjoiZW0wIn0sIjEionsicGFyZW50Tm9kZSI6 IjMyMzIyMzYwMjYiLCJuYW1lIjpudWxsLCJpZCI6ImVtMSJ9fX1dIjs=
[{"name":"192.168.1.250","id":"3232236026","items":{"default":{"parentNode":"3232236026", 「名前」:" u8bf7u9009u62e9u63a5u53e3","id" :"0"},"0":{"parentNode":"3232236026","name":null,"id":"em0"},"1":{"parentNode":" 3232236026","name" :null,"id":"em1"}}}]
これはブラウザに記録された結果です。
渡してほしいのは json_encode より前のデータです #3 の記述では曖昧にはならないと思いますね。
Mzp7czo3OiJkZWZ1YWx0IjthOjM6e3M6MTA6InBhcmVudE5vZGUiO3M6MTA6IjMyMzIyMzYwMjYiO3M6NDioibmFtZSI7czoxNToi6K+36YCJ5oup5 o6l5Y+jIjtzOjI6ImlkIjtzOjE6IjaiO31pOjaA7YTozOntzOjEwOiJwYXJlbnROb2RlIjtzOjEwOizMjMyMjM2MDI2IjtzOjQ6Im5hbWUiO3M6MTI6IkxBTjAo5YaF572RKSI7czoyOi JpZCI7czozOiJlbTAiO31pOjE7YTozOn tzOjEwOiJwYXJlbnROb2RlIjtzOjEwOizMjMyMjM2MDI2IjtzOjQ6Im5hbWUIO3M6MTI6IkxBTjEo5aSW572RKSI7czoyOiJpZCI7czozOiJlbTE iO319fX0=
よく見ていませんでした。 。 。
[{"name":"192.168.1.250","id":"3232236026","items":{ "defualt":{"parentNode" :"3232236026","name":"u8bf7u9009u62e9u63a5u53e3","id":"0"},"0":{"parentNode":"3232236026","name":"LAN0( u5185u7f51)","id": "em0"},"1":{"parentNode":"3232236026","name":"LAN1(u5916u7f51)","id":"em1"}}}]
正しいデータが再度与えられました
kZWZ1YWx0IjthOjM6e3M6MTA6InBhcmVudE5vZGUiO3M6MTA6IjMyMzIyMzYwMjYiO3M6NDioibmFtZSI7czoxNToi6K+36YCJ5oup5o6l5Y+j IjtzOjI6ImlkIjtzOjE6IjAiO31pOja 1 XJlbnROb2RlIjtzOjEwOiIzMjMyMjM2MDI2IjtzOjQ6Im5hbWUiO3M6MTI6IkxBTjEo5aSW572RKSI7czoyOiJpZCI7czozOiJlbTEiO319fX 0=
よく見ていませんでした。 。 。
10L への返信、これは確かに json_encode() 前の配列のデータです。
さらに、テストしたところ、ファイルから読み取られた内容がすべて英語であっても、Firefox Web コンソールは依然として Null を取得することがわかりました。
同時に、PHP コードにコンテンツを記述し、Firefox Web コンソールを表示しました。正しい結果が得られました。
結論: ファイルから読み込む限り、json_encode() の後、Firefox Web コンソールは null を取得するようです。
しかし、私は他のマシンでもそれを使用して、ファイルからコンテンツを読み取り、json_encode() を通じてインターフェースに表示しました。
ブラウザが取得するのは json_encode の実行結果のみであり、受信したデータは変更されません
したがって、それが null の場合は、json_encode 中に生成される必要があります
私が提供してほしいのは、null を見つけたときに正確に提供することです問題の原因を見つけることができるように、元のデータを保存します
抵抗がなければ、気にしません
ブラウザが取得するのは json_encode の実行結果のみであり、受信したデータは変更されませんデータ
したがって、それが null の場合は、 json_encode 中に生成する必要があります
私が提供してほしいのは、問題の原因を見つけることができるように、 null を見つけたときの元のデータです
そうでない場合は、アンチフレームしたくない、気にしません
上司、このアドレスの質問: http://bbs.csdn.net/topics/390507272
答えなくても、理由を教えてください。
ブラウザが取得するのは json_encode の実行結果のみであり、受信したデータは変更されません
したがって、それが null の場合は、json_encode 中に生成される必要があります
私が提供してほしいのは、null を見つけたときに正確に提供することです問題の原因を見つけることができるように、元のデータを保存します
炎上対策、やりたくない場合は、気にしません
8L から送信した段落は、確かに私の json_encode() の前の配列であり、 print_r で出力されたものは私の本館の配列を投稿したものです。
現象は、ターミナルの印刷結果は正常ですが、Firefox コンソールが異常であるということです。 スクリーンショットは次のとおりです。
写真からわかるように、php xxx.php を実行した後の結果、つまりエコーです。 result contains LAN1 (u5916u7f51 ),
Firefox コンソールでは、Firefox が受信した結果は null です。
次に、ファイルの内容を読み取り、読み取らずに直接 php コードに書き込みます。このスクリーンショットからわかるように、エコーの内容は基本的に同じです。 1階のものと同じです
しかし、Firefoxで得られる結果はまったく異なります。この結果は正しいです。
同時に、ファイルを読み込むと、中国語の文字を削除してすべて英語になりました。ファイルを読み込むと、Firefox は Null と表示しました。読み込まれない場合は、正常です。 .
そうじゃないですか
=> 323236026 [名前] => em0
名前は少なくとも非表示文字なので、どうすれば正しく変換できますか?
これは ajax アプリケーションですか? Firefox は引き続き操作できますが、 echo base64_encode(serialize($ar)); を
file_put_contents('test.txt',base64_encode(serialize($ar))); に変更してから、test.txt のコンテンツを投稿します
はい、ajax は php を呼び出し、php は後続の処理のために echo を通じて json オブジェクトを ajax に返します。
test.txt里面の内容:
YToxOntpOjA7YTozOntzOjQ6Im5hbWUiO3M6MTM6IjE5Mi4xNjguMS4yNTAiO3M6MjoiaWQiO3M6MTA6IjMyMzIyMzYwMjYiO3M6NToiaXRlbXMiO2E6M zp7czo3OiJkZWZ1YWx0IjthOjM6e3M6MTA6InBhcmVudE5vZGUIO3M6MTA6IjMyMzIyMzYw MjYiO3M6NDoibmFtZSI7czoxNToi6K+36YCJ5oup5o6l5Y+jIjtzOjI6ImlkIjtzOjE6IjA IO31pOja7YTozOntzOjEwOiJwYXJlbnROb2RlIjtzOjEwOiizMjMyMjM2MDI2IjtzOjQ6Im5hbWUiO3M6MTI6IkxBTjAo5YaF572RKSI7czoyOiJpZCI7czozOiJlbTAiO31pOjE7YToz OntzOjEwOiJwYXJlbnROb2RlIjtzOjEwIzMjMyMjM2MDI2IjtzOjQ6Im5hbWUiO3M6MTI6IkxBTjEo5aSW572RKSI7czoyOiJpZCI7czozOiJlbTEiO319fX0=
YToxOntpOjA7YTozOntzOjQ6Im5hbWUiO3M6MTM6IjE5Mi4xNjguMS4yNTAIO3M6MjoiaWQiO3M6MTA6IjMyMzIyMzYwMjYiO3M6NToiaXRlbXMiO2E6Mzp7czo3OiJkZWZ1 YWx0IjthOjM6e3M6MTA6InBhcmVudE5vZGUIO3M6MTA6IjMyMzIyMzYwMjYiO3M6NDoibmFtZSI7czoxNToi6K+36YCJ5oup5o6l5Y+jIjtzOjI6ImlkIjtzOjE6IjAiO31pOja7YTozOntz OjewOiJwYXJlbnROb2RlIjtzOjEwOizMjMyMjM2MDI2IjtzOjQ6Im5hbWUiO047czoyOiJpZCI7czozOiJlbTAiO31pOjE7YTozOntzOjEwOiJwYXJlbnROb2RlIjtzOizEwOizMjMyMj M2MDI2IjtzOjQ6Im5hbWUiO047czoyOiJpZCI7czozOiJlbTEiO319fX0=
file_put_contents('test.txt',base64_encode(serialize($arr_select));
print_r($arr_select);
echo " n";
echo $json;
これがモデレータのメインコンテンツとして出力されるはずです。
教えてください、#17 の 2 つのデータをどうやって入手しましたか?
「はい」の場合、なぜ違うのですか?
教えてください、#17 の 2 つのデータをどうやって入手したのですか?
「はい」の場合、なぜ違うのですか?
test.txt 内の 2 つのデータは、モデレーターのステートメントを実行することによって取得され、また echobase64_encode(serialize($arr_select)); の結果でもあります。
2 番目のデータは、Firefox Web コンソールによって追跡された HTTP リクエストであり、Firefox によって出力された応答の内容が含まれています。
どのように変更しても、php の Linux ターミナルのダイレクト エコーでは LAN1 (u5916u7f51) が表示され、Firefox では確かに Null が表示されるため、なぜ異なるのかわかりません。初めてこの状況に遭遇しました。中国語があるかどうかに関係なく、ファイルを読み取ると
コードを別のマシンにデプロイして、環境が原因かどうかを確認してみます。
file_put_contents('test.txt',base64_encode(serialize($arr_select))); をプログラムに入れてから、Firefox を使用して通常のプロセスに従ってプログラムにアクセスしてください
file_put_contents('test.txt',base64_encode(serialize($arr_select))); をプログラムに入れてから、Firefox を使用して通常の手順に従ってプログラムにアクセスしてください。 process
この方法で取得した test.txt が実際のデータです
申し訳ありませんが、モデレーター、別の環境で試してみましたが、問題は見つかりませんでした。その後、21 階でプロンプトを読んだ後、ファイルのパーミッションが原因であることがわかり、root パーミッションを使用して Linux ターミナルで直接実行したところ、正常に印刷できましたが、ブラウザから印刷するときに使用した apche パーミッションが不十分であったため、ファイルが開かれませんでした。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











PHPには4つの主要なエラータイプがあります。1。notice:わずかなものは、未定義の変数へのアクセスなど、プログラムを中断しません。 2。警告:通知よりも深刻で、ファイルを含むなど、プログラムを終了しません。 3。ファタラー:最も深刻なのは、機能を呼び出すなど、プログラムを終了します。 4。ParseError:構文エラーは、エンドタグの追加を忘れるなど、プログラムの実行を防ぎます。

PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

HTTPリクエストメソッドには、それぞれリソースを取得、送信、更新、削除するために使用されるGET、POST、PUT、および削除が含まれます。 1. GETメソッドは、リソースを取得するために使用され、読み取り操作に適しています。 2. POSTメソッドはデータの送信に使用され、新しいリソースを作成するためによく使用されます。 3. PUTメソッドは、リソースの更新に使用され、完全な更新に適しています。 4.削除メソッドは、リソースの削除に使用され、削除操作に適しています。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

Phpoopでは、self ::は現在のクラスを指し、親::は親クラスを指し、静的::は後期静的結合に使用されます。 1.Self ::静的方法と一定の呼び出しに使用されますが、後期静的結合をサポートしていません。 2.Parent ::サブクラスには、親クラスのメソッドを呼び出すために使用され、プライベートメソッドにアクセスできません。 3.Static ::継承と多型に適した後期静的結合をサポートしますが、コードの読みやすさに影響を与える可能性があります。

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。
