※ ChatGPTを利用し、要約された質問です(原文:MySQLからデータを取得すると日本語が「??」と表示される)
MySQLからデータを取得すると日本語が「??」と表示される
このQ&Aのポイント
PHPとMySQLを使ってブラウザでデータベースの読み書きをするプログラムを作成していますが、MySQLからデータを取得すると日本語のデータが「??」と表示されてしまいます。
また、ブラウザからMySQLへのデータの書き込みも行えない状況です。
ローカルマシンでは問題がなかったため、サーバマシンにアップしてから発生するようになりました。
MySQLからデータを取得すると日本語が「??」と表示される
PHPとMySQLを使い、ブラウザでデータベースの読み書きをするプログラムを作っています。
ローカルで作成しているときは特に問題が無かったのですが、いざサーバマシンにアップしてみると問題が発生するようになりました。
【事象】
1.MySQLからデータを読み込みブラウザに表示すると、日本語のデータのみ「??」と表示される。
2.ブラウザからMySQLへデータの書き込みをしようとすると書き込みが出来ない。
【現時点での切り分け】
1.GETでデータを渡しており、受信した方で$_GET['hoge']を表示させると正常に表示される。ただし、データをMySQLに格納する際にエラーがでる。
2.英数字の読み書きは問題なし。
3.サーバマシンを直接操作し、コマンドプロンプトからデータを入力すると日本語でも正常に格納される。
【ローカルマシン】
Apache2.xx
PHP 4.xx
MySQL 5.xx
【サーバマシン】
Apache 2.2.0
PHP 5.1.2
MySQL 5.0
【設定等】
PHP、MySQLの両方とも文字コードをSJISに設定しています。
また、METAタグで「charset=Shift_JIS」と指定しています。
Apacheのhttpd.confファイルにおいてISO-8859-1をコメントアウトしましたが改善されませんでした。
mb_convert_encodingを使って文字コードを強制的に(?)SJISにして書き込もうとしてもダメでした。
読み込みも然りです。
色々と試してみましたが全然改善されず困ってます。
どなたかアドバイスをいただけましたらうれしいです。
お礼
DBに接続した後に SET NAMES UJIS というSQL文を送るようにしたら解決しました。 ありがとうございました。