Linux サーバー上で MySQL データベースを使用する Web サイトに取り組んでいます。
データベースでphpMyAdminを使用すると、
- MyISAM は、この MySQL サーバーのデフォルトのストレージ エンジンです。
- latin1_swedish_ci
ただし、すべてのテーブルを InnoDB と utf8_unicode_ci で作成しました。また、すべてのテーブルのテーブル フィールドが utf8_unicode_ci であることも確認しました。
それでも、mysql_fetch_array を実行してストリームにエコーすると、意味不明になります。mysql_set_charset('utf8')
テキストが正しく表示されるように明示的に設定する必要がありました。
PHP のバージョンは 5.3.9 です。MySQL のバージョンは 5.1.70-cll - MySQL Community Server (GPL) です。
この問題に遭遇したのはこれが初めてで、これまで文字セットを設定する必要はありませんでした。
php mysql_* によってフェッチされたテキストが意味不明になる原因は何ですか? どのような状況で必要mysql_set_charset
ですか?
編集: これは、mysqli、pdo などの代替ライブラリを使用する提案を引き付けるための質問ではありません。MySQL と文字セットの動作に関するこの現在の状況について理解したいだけです。ありがとう。