• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MariaDBデータベースの日本語文字化け)

MariaDBデータベースの日本語文字化け

このQ&Aのポイント
  • 【質問】MariaDBデータベースで日本語の表示が文字化けする問題が発生しています。過去の質問でも使用したデータベースで、英単語と日本語の表示プログラム用です。
  • 文字セットをcp932に変更しても問題が解決せず、Xamppのバージョンの違いも関係している可能性があります。
  • Xamppのインストール後にすべき文字セットの設定がわかりません。助言をいただけると幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

いくつか確認してほしいことがあります。 ・MySQLで一レコード取得して文字列を表示するだけのプログラムをコンソールから実行したときに、ShiftJISとして正しく表示されるのか。 ・displayJapaneseのHTMLにはmetaタグでcharset指定がされているのか です。 これらが想定通りに記載されているということであれば、あとはMETAタグとHTTPレスポンスの優先順位の問題となると思います。 以前ご紹介したChromeの開発者ツールでHTTPResponseを確認いただいた際に、HTTPのレスポンスの中でcharsetが設定されていて、それがutf-8になっていませんか。 そうであれば、各HTMLをレンダリングする前に、HTTPヘッダで文字コードを指定する必要があると思います。(Apacheの設定を変える方法もありますがそれは別のお話) 今出力するHTMLは ・全体のフレーム用のHTML ・英語用のHTML ・日本語用のHTML これらのすべてに、文字列およびHTMLを出力する前に、以下を追加する。 header('Content-Type: text/html; charset="UTF-8"'); これはPHPで任意のHTTPヘッダを出力する関数で、引数に設定したものは、このコンテンツが何なのかを表します。 https://www.php.net/manual/ja/function.header.php https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Content-Type

papashiroSooke
質問者

お礼

早速にご回答を頂き、有難うございます。 またまたhogehoge78さんからの回答を見て、とても嬉しいです。 じつは、自分でも何とか解決できないかと思いmy.iniファイルなどをいじってみましたが上手く行きませんでした。 そこで最後の手段ということで、テータテーブルを一旦truncateして、OpenOfficeで作ってあった英語対日本語訳の表をCSVファイルにして、 load data infile コマンドでテーブルに送り、文字化けの問題を解決しました。 そんなわけで、回答にある >MySQLで一レコード取得して文字列を表示するだけのプログラムをコンソールから実行したときに、ShiftJISとして正しく表示されるのか。 という質問にはもうお答えすることが出来ません。 >displayJapaneseのHTMLにはmetaタグでcharset指定がされているのか については、displayJapanese.php は純粋にphpファイルとしてあり、<meta>タグは使っていません。 hogehoge78さんの貴重なお時間を頂いて書かれた回答の下の部分には、私がまだよく理解しておらず、これからも研鑽を積むべき内容が書かれており、今後の学習の対象にしていきたいと考えております。 いつも本当に有難うございます。