電子書籍の厳選無料作品が豊富!

いつもお世話になってます。
以下の様な問題が発生しておりまして、
何か解決するための情報がありましたらご提供頂けませんでしょうか。

------------
PHPで、テキストボックスと登録ボタンを配置した簡単な入力フォームを作成しました。
(登録ボタン押下後は入力した文字を消すことはせず、
DB側に登録した内容をテキストボックスに表示するような形式です。)

ところがテキストボックスに「能」と言う文字を入力すると、
文字化けを起こし、「??」と言う文字が表示されます。
「一」や「日」などは問題ありませんでした。

これは2byte文字の変換に失敗している所為と考え、文字コードについて調べました。

PHP側からは全てutf8の文字コードでデータを送信しています。
DB側の文字コードは以下のようになっていました。

>show variables like 'character\_set\_%';
Variable_name Value
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server ujis
character_set_system utf8

各種サイト様を参考にしたところ、
character_set_server が ujis となっているのが問題のような気がしています。

ですが、本DBは学校で借りているレンタルサーバを使用しているため、
my.cnf等直接ファイルを修正することが出来ません。

なので、以下のサイト様を参考にSQL発行の際には必ず
SET character_set_server = utf8;
も発行するようにしてみたのですが、上手くいきませんでした。

http://thesnowcolor.blogspot.jp/2010/10/phpmyadm …

自ら試したのはここまでです、何かほかに調べたほうがよい、
などありましたら情報のご提供宜しくお願い致します。

【PHP環境】
Apache 2.2.3
PHP 5.1.6
MySQL 5.0.45
(※他、必要情報ありましたらご指摘お願いします)

A 回答 (1件)

「能」がひっかかるということは「ソ」や「表」でもひっかかりますか?


おそらくクライアントから送られてくるデータがshift jisで
なんらかのエスケープ処理がされているのではないでしょうか?
普通にSJISからUTF8の変換がされていれば問題ないはずですが・・・
    • good
    • 0
この回答へのお礼

なるほど、所謂5C問題というやつですね。
こちらのサイト様がすごく詳しく記載をしてくれているので熟読してみます。
返答ありがとうございました。

http://www.shtml.jp/mojibake/sjis_cgi.html

お礼日時:2012/10/12 16:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!