ホームページ >バックエンド開発 >PHPチュートリアル >PHP の Mysqli エラー メッセージが文字化けする
PHPのmysqliを使用してデータベース接続を作成する際のエラーメッセージが文字化けして表示されます。
コードは次のとおりです:
リーリーMysql がまだインストールされていません、mysql がインストールされていないときに mysqli のエラー メッセージを確認したいだけです。結果は次のようになります:
ChromeでもIE11でもコードが文字化けします。
検査ツールは、http 応答ヘッダーの文字セットが utf-8 であり、Chrome と IE11 のデフォルト設定も utf-8 であることを示しています。さらに、php ファイル自体と、Apache および PHP のデフォルトのエンコード設定はすべて utf-8 です。
画像内の文字化けコードはmysqli_connect_error()
で取得した文字化けコードと一致しているため、現時点ではmysqli自体の問題であると推測されています。
エンコーディングを検出して得られた結果は、エラー メッセージのエンコーディングも utf-8 であることを示しています。 mb_detect_encoding($conn->connect_error)
MySQL がインストールされていません!
このエラー メッセージは、Windows システムのネットワーク通信関連モジュールによって提供されるため (以前は、プロキシ サーバーの構成が正しくない場合、このようなエラー メッセージがログによく記録されていました)、したがって、Win10 がこの原因であると視覚的に推定されます。 。
問題はまだ解決されていません。中国語ですがGB2312、GBK、GB18030で表示させてみましたがやはり文字化けしましたが、文字化けの内容は違いました。
返信内容: PHPのmysqliを使用してデータベース接続を作成する際のエラーメッセージが文字化けして表示されます。コードは次のとおりです:
リーリー Mysql がまだインストールされていません、mysql がインストールされていないときに mysqli のエラー メッセージを確認したいだけです。結果は次のようになります:
ChromeでもIE11でもコードが文字化けします。
検査ツールは、http 応答ヘッダーの文字セットが utf-8 であり、Chrome と IE11 のデフォルト設定も utf-8 であることを示します。さらに、php ファイル自体と、Apache および PHP のデフォルトのエンコード設定はすべて utf-8 です。
画像内の文字化けコードは
で取得した文字化けコードと一致しているため、現時点ではmysqli自体の問題であると推測されています。
mysqli_connect_error()
エンコーディングをチェックして得られた結果は、エラー メッセージのエンコーディングも utf-8 であることを示しています。
どうやって解決しますか? mb_detect_encoding($conn->connect_error)
悪気はありませんが、多くの回答者が質問の説明を注意深く読まずに結論を急ぐため、重要なことを繰り返すことにしました:
MySQL がインストールされていません!
進捗状況: コンソールで php インタープリターを使用して実行すると、以下の図に示すように、正しいエラー メッセージが取得され、中国語であることがわかります。
このエラー メッセージは、Windows システムのネットワーク通信関連モジュールによって提供されるため (以前は、プロキシ サーバーの構成が正しくない場合、このようなエラー メッセージがログによく記録されていました)、したがって、Win10 がこの原因であると視覚的に推定されます。 。
問題はまだ解決されていません。中国語ですがGB2312、GBK、GB18030で表示させてみましたがやはり文字化けしましたが、文字化けの内容は違いました。
あなたの環境では、PHP を使用して中国語を出力するのが普通ですか? を追加しましたか?
Chrome のエンコードを手動で変更してみてください?
コンピューターで試したところ、次の 3 つの結論に達しました: 1. PHP は最終的にブラウザーの純粋な HTML にフィードバックするため、PHP ページは HTML の文字セットを使用してページを UTF8 エンコーディングに設定しませんでした。 2. 返されたものはまったく utf8 ではありません。たとえば、返された gbk ではページで utf8 を設定しましたが、ブラウザは GB2312 でした。設定に問題があり、それが見つからなかった可能性があります。あなたのコンピュータではこれに関連する情報が表示されません。ただ質問を終了してください。盲目的に全員に試してもらう必要はありません。
ブラウザのエンコードを設定すれば良いはずです、mysqliのせいではないはずですし、書き方も間違っています
インストールした MySQL データベースのエンコーディングはデフォルトで GBK になっています。フロントエンド、バックエンド、データベースのエンコーディングを確実に統合するために、MySQL のエンコーディングを変更することをお勧めします。実行前に set names utf 8
をクエリして、バッファーの内容が utf8 形式であることを確認します
作者の質問にはMySQLがインストールされていないことが分からなかったので削除しました。
しかし、実際には mysqlnd 拡張機能が原因であるはずです
ハンドシェイク中に文字セットが返されるため、まず MySQL をインストールして、文字列 utf8 を指定して試してみることをお勧めします。
データベース接続設定にエンコード設定を追加します
mysqli_query('set name UTF8');