PHPは文字化けしていないが、データベースの背景は文字化けしている
データベースの文字化け データベース PHP の文字化け
図 1 に示すように、PHP は文字化けせずに追加、変更、およびクエリを実行しますMySQL データベース バックエンド図2のような文字化けが表示されます
原因は何でしょうか?
写真 1:
写真 2:
ディスカッションへの返信 (解決策)
文字化けしたコードを見るために使用されたソフトウェアは何ですか?
マスター、解決してください
文字化けしたコード
Toad For MySQL
PS: CVS ファイルはどこでも文字化けしており、中国語になっています。 。 。 。
データベースフィールドの接続調整はデフォルトで latin1 です
保存するデータは utf-8 です
必要な文字セットを mysql に宣言していないため、mysql は依然として latin1 を使用してデータを取得します。あなたにとっては utf-8 です
ただし、mysql 管理ツールは必要な文字セットを宣言する必要があるため、latin1 とみなされる utf8 を utf8 に変換すると文字化けが発生します
PHP の追加、変更、クエリは、図 1 に示すように、文字化けしないでください。
図 2 に示すように、MySQL データベース バックエンドで文字化けが表示されます。
原因は何ですか?
図 1:
図 2:
PS:
ページのエンコーディングは UTF-8 を使用します
データベース テーブルのエンコーディングは UTF-8 を使用します
データベース フィールドの接続照合順序はデフォルトの latin1 です
保存されたデータは utf-8 です
必要な文字セットを mysql に宣言していないため、mysql は依然として latin1 を使用してデータを取得します。あなたにとってそれはutf-8です
ただし、mysql管理ツールは必要な文字セットを宣言する必要があるため、latin1とみなされるutf8をutf8に変換すると文字化けが発生します
校正コードは: utf8_general_ci
そうです、latin1 だと utf-8 データを挿入できないはずです。先ほど返信したとき、データをどのように挿入したかについてまだ考えていました
しかし、これは私が行った説明には影響しません、単にリンクが進んでいるというだけです
mysql のデフォルトの文字セットは latin1 であり、一般的に使用する人はほとんどいませんデフォルトの文字セットは、mysql をインストールするときに変更されます (ほとんどの人はどこを変更すればよいのかわかりません)
そのため、mysql を操作するためにデフォルト以外の文字セットが使用されている限り、その前にセット名の文字セット コードを実行する必要があります。操作
utf-8 の場合、名前は utf8 に設定されます
次のコードを utf-8 エンコードで保存して実行します
<?phpheader('Content-type: text/html;charset=utf-8');echo iconv('latin1', 'utf-8', '供应商-西施');
<?phpheader('Content-type: text/html;charset=utf-8');echo iconv('latin1', 'utf-8', iconv('gbk', 'utf-8', '供应商-西施'));
3 つの点が一致していて、文字化けが発生しないことを確認してください:
1、データベースとデータテーブルのエンコーディング
2. ページ内部のエンコーディング
3. ファイルのエンコーディング
そうです、latin1 の場合は、 utf-8 データを挿入できないはずです。先ほど返信したとき、データをどのように挿入したかについてまだ考えていました
しかし、これは私が行った説明には影響しません、単にリンクが進んでいるというだけです
mysql のデフォルトの文字セットは latin1 であり、一般的に使用する人はほとんどいませんデフォルトの文字セットは、mysql のインストール時に変更されます (ほとんどの人はどこを変更すればよいのかわかりません)
そのため、mysql を操作するためにデフォルト以外の文字セットが使用されている限り、その前にセット名の文字セット コードを実行する必要があります。操作
utf-8 の場合、名前は utf8 に設定されます
次のコードを utf-8 エンコードで保存して実行します
<?phpheader('Content-type: text/html;charset=utf-8');echo iconv('latin1', 'utf-8', '供应商-西施');
<?phpheader('Content-type: text/html;charset=utf-8');echo iconv('latin1', 'utf-8', iconv('gbk', 'utf-8', '供应商-西施'));
ちょっと理解できません、そして問題がどこにあるのかまだわかりません もう?データベースのエンコーディングは UTP8 である必要があります: "show variables like 'character_set_database';" ---》UTF8@~~~~~~~~~~~ に戻ります
キーはcharacter_set_server の値です
文字化けしたコードがあるので探してみましょう
キーはcharacter_set_serverの値です
アプリケーションは購入した仮想ホスト上で公開されています Character_set_serverの値を確認するにはどうすればよいですか?
アドバイスありがとうございます
'character_set_server'のような変数を表示します
結果はUTF-8です
これはちょっと無理です、最後の手段
select BINARYsupplier_ from tbl_name where id_=17
echobase64_encode('retrieved data');
結果を投稿してください
これはちょっと無理です、最後の手段
select BINARYsupplier_ from tbl_name where id_=17
echo base64_encode('retrieved data');
結果を投稿します
結果は以下のようになります (結果はデータベース クライアントの結果であり、PHP ページ データは正常に表示されます)。 PS: この投稿のテーマの内容 2 つの写真 -- 》写真 1 は正常に表示される PHP ページ、写真 2 は文字化けが表示されるデータベース クライアント、CV もどこでも文字化けします
プログラムを使って文字化けした内容を抽出し、base64でエンコードした値を投稿してほしい
これは解析に役立ちます
ぜひ投稿してください写真は何の役に立つのですか?
プログラムを使って文字化けしたコンテンツを抽出し、base64 でエンコードされた値を投稿してほしいです
これは分析に役立ちます
以下に示すように、理解しました、ありがとうボス
文字化けした内容:
BINARY使用後の文字化け内容:
echobase64_encode($t);//w6fCscK7w6fCm8Kuw6XCm8Kb
$これはキーです BINARY (バイナリ) モードで読み取られた文字化けしたフィールドの内容
グラフで比較します (方法 #7) あなたのデータはまだ latin1 utf-8 として扱われます
文字セットを変更する前にこれらのデータを挿入しましたか?
echobase64_encode($t);//w6fCscK7w6fCm8Kuw6XCm8Kb
$t は、BINARY (バイナリ) モードで読み取られた文字化けしたフィールドの内容です
グラフで比較してください (方法 #7) あなたのものはまだ UTF です-8 は latin1 として扱われます
文字セットを変更する前にこれらのデータを挿入しましたか?
いいえ。 。文字セットは変更されていません。挿入する前にデータベースのエンコーディングが UTF8 に設定されていないはずです。
QQ に相談してください。
結果を取得してください。このように
echobase64_encode($t); //w6fCscK7w6fCm8Kuw6XCm8Kb
$t は BINARY (バイナリ) モードで読み取られた文字化けしたフィールドの内容です
グラフィック比較 (#7 の方法) によれば、utf-8 はまだ扱われていますlatin1 として
これらのデータはあなたによって変更されました
3Q
前に挿入された文字セットですか?

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック









Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。
