PHP は文字化けしていませんが、データベースの背景が文字化けしています この投稿は susoft2008 によって 2013-07-22 18:05:28 に最終編集されました 図 1 に示すように、PHP は文字化けせずに追加、変更、クエリを実行します。 図 2 に示すように、MySQL データベース バックエンドで文字化けが表示されます。 理由は何ですか? 図 1: 図 2: データベースが文字化けしました データベース PHP 文字化け 共有先: -----解決策---------データベースフィールドの接続校正ですデフォルトの latin1 保存したデータはutf-8です 必要な文字セットを mysql に宣言していないため、mysql は引き続き latin1 を使用してデータを取得します。あなたにとって、それは utf-8 です ただし、mysql管理ツールで必要な文字セットを宣言する必要があるため、latin1とみなされるutf8をutf8に変換すると文字化けが発生します-----解決方法-------- ------------そうです、latin1だとutf-8データは挿入できないはずです。先ほど返信したとき、どうやってデータを挿入したのかまだ考えていました しかし、これは私が行った説明には影響しません。単にリンクが進んでいるというだけです mysql のデフォルトの文字セットは latin1 です。一般に、mysql をインストールするときにデフォルトの文字セットを変更する人はほとんどいません (ほとんどの人はどこを変更すればよいのか知りません) したがって、デフォルト以外の文字セット操作が使用されている限り、mysql は操作の前にセット名の文字セット コード を実行する必要があります。 utf-8 の場合は、utf8 という名前が設定されます 次のコードを utf-8 エンコードで保存して実行します header('Content-type: text/html;charset=utf-8'); echo iconv('latin1', 'utf-8', '供应商-西施'); ログイン後にコピー または、次のコードを gbk エンコードで保存して実行 header('Content-type: text/html;charset=utf-8'); echo iconv('latin1', 'utf-8', iconv('gbk', 'utf-8', '供应商-西施')); ログイン後にコピーこの結果が表示されます -----解決策---------3 つのポイントが一致していることを確認し、文字化けしたコード: 1. データベースとデータテーブルのエンコーディング 2. ページ内部エンコード 3. ファイルのエンコード -----解決策----------------------------キーはcharacter_set_serverの値です-----解決策---------------------- ----------コードが文字化けしている場合は、コード Barを見つけてください-----解決策---------- ----------------こんな結果を出してほしい echobase64_encode($t);//w6fCscK7w6fCm8Kuw6XCm8Kb $t は、BINARY モードで読み取られた文字化けしたフィールドの内容です グラフの比較 (方法 #7) によると、utf-8 は依然として latin1 として扱われます。 を変更する前にこのデータを挿入しましたか?