みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

PHPとMySQLの文字化けに関して

PHPとMySQLの文字化けに関して

PHPとMySQLを利用したホームページ作成の勉強をしている初心者です。
現在、レンタルサーバーをお借りして、作成したページを表示させようとしておりますが、
文字化けで悩んでおり、解決策をご教授いただきたいと思います。

まず症状についてですが、phpMyAdminを利用してデータを挿入すると、
phpMyAdminでは文字化けしませんが、作成したホームページでは文字化けが発生します。
(???が続くような文字化けです。)

一方、データ挿入用のページを作成し、そこから挿入を行うと、
phpMyAdminでは文字化けが発生しますが、
ホームページ上では一応日本語表示されます。
(phpMyAdminでの文字化けは、こんな感じです。
??TM?????¬??¢??????
また、上手く表示できない物もあります。)

希望としては、全ての文字コードをutf-8に統一させたいのですが、
データベース関連の文字コードの設定が出来ず、解決が出来ません。

以下、現在の状況と、素人ながら試してみた点などについて記載します。
(情報の不備などございましたら、お手数ですがご指摘ください。)

---------------------------------------------------------------
■phpinfo関連

□PHP Version 5.1.6

□MySQL Client API version 5.0.82sp1

□default_charset
Local ValueUTF-8
Master Value no value

■phpMyAdmin関連

□phpMyAdmin Version 2.11.10

□status の結果

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL
server version for the right syntax to use near 'status' at line 1

□SHOW VARIABLES LIKE 'char%'; の結果

Variable_nameValue
character_set_clientutf8
character_set_connectionutf8
character_set_databaseutf8
character_set_filesystembinary
character_set_resultsutf8
character_set_serverlatin1
character_set_systemutf8
character_sets_dir /usr/share/mysql/charsets/

□set character_set_server = utf8; の結果

SQL は正常に実行されました (クエリの実行時間 0.0002 秒)

と出ますが、変更されません。

□phpMyAdmin上のデータベースの表

データベース照合順序

DB1utf8_general_ci
DB2utf8_general_ci
information_schemautf8_general_ci
合計: 3 latin1_swedish_ci


■.htaccess関連

.htaccessを設定してFFFTPでアップロードしても、表示されません。
また、別名ファイルでアップし、アップロード先で名称変更すると、消えてしまいます。


■その他

ファイル作成にはTeraPadを利用し、
UTF-8Nにて保存しております。

ホームページのメタタグには、
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
というものを設定しております。

php.iniやmy.cnf の設定で解決するとの情報もあり、
当該ファイルを探してみましたが、見つけることができませんでした。

---------------------------------------------------------------

なお、レンタルサーバーでの利用では、
.htaccessやphp.ini、my.cnfの設定が出来ない場合もあるそうですので、
そのような場合、どのような解決法があるのでしょうか?

どうぞよろしくお願いいたします。

投稿日時 - 2010-06-29 16:27:00

QNo.6003873

困ってます

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

phpでMySQLに接続したあとに
$sqlf = "SET NAMES utf8";
$result = mysql_query($sqlf);
を記入する。

phpMyAdminにutf-8でログイン後データベース、テーブル等も「操作」のタブから
照合順序を「utf8_unicode_ci」に設定する。

あとHTMLで
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
を記入する。

自分はこれでうまくいきました。

投稿日時 - 2010-07-17 18:54:19

ANo.3

No.1です。
お礼に書かれているのは全て違います。

設定&バージョンによっても違いますが、添付画面のようにphpMyAdminへログインする時に
指定する文字コードです。
phpMyAdminで使う文字コードがUTF-8以外になっているから、phpMyAdmin以外は文字化けになるのでしょう。

投稿日時 - 2010-06-29 19:27:31

お礼

本当に色々と有難うございます。

わざわざわかりやすく図まで載せていただき、
初心者には大変助かります。

さて、ご指摘の点についてですが、今、確認したところ、
日本語 Japanese (utf-8)とはなっておりましたが、
最初にデータベースを作成したときに、
この設定で作っていたかが定かではありません。
今一度データベースを作り直し、
今度は日本語 Japanese (utf-8)であることを確認してから
再度挑戦してみたいと思います。


有難うございました。

投稿日時 - 2010-06-29 19:37:22

ANo.2

ん?と思ったのは、↓ここですかね。
> 合計: 3 latin1_swedish_ci

あと スクリプトの方で DBにコネクトしたときに、↓を投げてやると 幸せになれるかもしれません。
mysql_query("SET CHARACTER SET UTF8");


本筋とは関係ないですけど、勉強に使うだけなら XAMMPでいいんじゃないかとも思ったりもしました。

投稿日時 - 2010-06-29 17:50:15

お礼

回答有難うございます。

mysql_query("SET CHARACTER SET UTF8");

を入れてみましたが、せっかく教えていただいたのに、
これまで表示されていた日本語も化けてしまいました。
おそらく私の設定したデータベースの方に問題があり、
教えていただいた方法が上手くいかないのではないかと思います。

また、

> 合計: 3 latin1_swedish_ci

の設定についてですが、直し方がどうしてもわからず、
気になっていたので、表だけ記載させていただきました。


それから、XAMMPでも、とのことですが、
いずれレンタルサーバーでホームページの運用もしてみたい考えており、
その際、やはり同様の問題が出てくるのではないかと、
文字化けの問題を解決したいと思っております。
他のレンタルサーバーについては全く存じ上げないのですが、
通常、htaccessやphp.ini、my.cnfなどの設定が出来るのでしょうか?

質問が色々になってしまい、申し訳ありません。

投稿日時 - 2010-06-29 19:27:47

ANo.1

症状から考えると、phpMyAdminの文字コードがUTF-8以外になっているのが原因だと思います。
文字コードを良く確認してください。

投稿日時 - 2010-06-29 16:50:42

お礼

ご回答有難うございます。
「UTF-8以外になっているのが原因だと思います。」
というのは、

character_set_server latin1

の部分か、

合計: 3 latin1_swedish_ci

の部分のいずれかだと思いますが、

character_set_server latin1

の部分に対しては、

set character_set_server = utf8;

を行っても変化が見られませんでした。
また、

合計: 3 latin1_swedish_ci

につきましては、phpMyAdmin上でどの様に設定するかわからず、
もし方法をご存知の方がいらっしゃったら教えていただきたいと、
現状として表を載せさせていただきました。

.htaccessやphp.ini、my.cnfでの設定が出来ない場合には、
なかなか難しいのでしょうか?

投稿日時 - 2010-06-29 19:01:46

あなたにオススメの質問