プロが教えるわが家の防犯対策術!

いろいろと検索などして探してみたのですが、情報が得られず困っております。お分かりの方おられましたらご教示いただけると幸いです。

環境
Apache 2059
PHP 5.1.6
MySQL 5.0.24a
WindowsXP SP2

PHPソース すべてUTF8書いてます。
HTML出力もヘッダーでUTF-8で表示しています。
my.cnfでは
すべて default-character-set=utf8
で統一しています。

さらに、PHPからMySQLに接続したときに
set names utf8;
もしてます。

この環境で、 ~ のみが文字化けしてしまいます。
たとえば、

"あ~あ" とINSERTすると
SELECTしてみると "あ?あ" となってしまいます。

~以外の文字は問題ありません。
またPHP上で発行クエリ文を表示させると、まだ~となっているので、MySQL側の問題だとは思っているのですが、どう設定すればよいかわからないところです。

MySQL Query Browzerからでも同様になってしまいます。

ご存知の方おられましたら、情報よろしくお願いします。

A 回答 (1件)

~は結構鬼門で、UTF8では2つのコードが割り当てられています。


「~(U+FF5E)」と「~(これが上下反転した形状)(U+301C)」です。
SJISからUTF8に変換すると後者に割り当てられるようで、UTF8を
SJISに変換すると?になってしまう、という現象があったと覚えています。
そのときの回避策は出力時にバイナリ置換してU+301CをU+FF5Eに
しました。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

なるほど、なかなか一筋縄にはいかないものなんですね。

いろいろ試してみて、あるテーブルのみで起こっていたので、なぜかなと悩んでいたのですが、エクスポートで、create table文を出力してみると、なぜか一部のカラムのみ文字コードが ujis として記録されていたようでした。

自分では設定したつもりも記憶もなかったので気づきませんでした。基本はデータベース単位でのみ文字コードを決めており、テーブル単位でも文字コードを設定できることは知っていましたが、カラム単位でまでできるとは知りませんでした。

そのカラムに設定されていた文字コード指定を削除したところ、直りました。

文字コードに関しては、よく問題になってしまいますが、勉強になりました。ありがとうございました。

お礼日時:2006/10/01 23:07

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