- ベストアンサー
mysql→EUC-JP、php→UTF-8の時の文字コード変換箇所について。
こんにちわ。 現在xreaのサーバーを使っているのですが、私が借りている サーバーはmysqlの文字コードがEUC-JPで固定されており、 WebページはUTF-8で書いている為、データを取り込む時、 上げる時共に文字化けしています。 色々試行錯誤したのですが、エラーが出てしまいうまくいきません。 そこで、このような環境の時はどの部分で、文字コードの変換処理を すればいいのでしょうか? (SQL文で行うべきか、PHP文で行うべきか、それともお互いで処理するべきか。) サーバー環境は以下です。 Apache 1.3.37 PHP 5.1.4 MySQL 4.0.26 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>という事は、全てPHP上で操作すればいいって事かもしれません。 その解釈でいいです。またutf-8を指定してphpAdminにログインすればphpMyAdminで挿入しても大丈夫です。 (蛇足) サーバ仕様に依存する話なので、xreaのサポートボードでもよかったですねぇ(苦笑
その他の回答 (4)
- -chiffon-
- ベストアンサー率39% (303/768)
#2です。 解決されているようなので書き込む必要もないかと思いましたが。 #2のファイルはXREAでは関係なかったようです。 #3様のおっしゃるように、以前使っていたサーバーの一つがMySQL4.1だったことがあり、文字化けで苦しんでいたときに必要だったので、何気に入れていたのですが、現在の環境では必要のないファイルだったようです。 ということで、#2に関しては忘れてください。大変失礼しました。
お礼
こちらこそ勉強になりました! ありがとうございました!
- shimix
- ベストアンサー率54% (865/1590)
4.1以降だと「強制変換」されるのでいろいろ苦労しますが、4.0なら何も考えなくていいです。考え過ぎて妙なことをしてしまってませんか? MySQL4.0であれば、phpとMySQLの間で何も変換されませんよね。なので「そのまま」の状態で入出力すれば文字化けは起こりません。phpMyAdminからEUC-JPで挿入すれば、たしかに取り出したときに(EUC-JPのままなので)化けますが、それ以外は化ける要因がありません。 ちなみに「どうしても変換したい(phpMyAdminでEUC-JPで内容を見たい・挿入したい)」のであれば、php側ですべきでしょうね。
補足
もしかして仰る通り、色々検索してすごく大変な事しなきゃって気持ちになってたのかもしれません・・。 それ以前にスキルが足りないのが原因ですが・・。 何もしなければ文字化けしないのですね! 自分はmysqladminでテーブルを作成、値を入れ、 それをUTF-8で書いたPHPで呼び出し閲覧したら文字化けしたんです。 という事は、全てPHP上で操作すればいいって事かもしれません。 もし解釈が間違っていれば再度コメント頂けると助かります! ありがとうございました!
- -chiffon-
- ベストアンサー率39% (303/768)
#1です。 すみません、今確認してみましたら、/public_html/log/phpmyadminへ下記の内容の.htaccessファイルを置いてます。(私の使っているサーバーはPHP4です) <IfModule mod_php4.c> php_value mbstring.internal_encoding "UTF-8" php_value mbstring.http_output "UTF-8" php_value mbstring.script_encoding "UTF-8" php_value mbstring.http_input "UTF-8" </IfModule>
補足
何度もありがとうございます! この.htaccessファイルの意味って何でしょうか? 自分も置いた方がいいですか?
- -chiffon-
- ベストアンサー率39% (303/768)
こんにちは。 同じくXREAを利用し、MTのブログをUTF-8で表示させています。 あまり知識もなくやっているので勘違いとかしているのかもしれませんが…。 私は、phpMyAdminの言語を「日本語-Japanese(utf-8)」として扱っています。(mysqlの文字コードはいじれないので) もともと他所から移転してきたときにUTF-8でしてきたので、データをインポートした際もそのままのエンコードで扱いましたが、文字化けとかはおきてないです。
補足
早速の回答ありがとうございます!! 同じって事ですごくうれしいです。 仰る通りにphpmyadminで設定変更したら治りました! しかし、正直理解していないです・・。 データベースはEUC-JPしか選べなかったのに、 ここでUTF-8に直したって事でしょうか? それともデータベースはEUC-JPのままで、 入れる値だけUTF-8にしたって事でしょうか? 分からない事だらけですいません。
お礼
ありがとうございます! やっと理解できました。 はは・・、今度はxrea使ってみます!