※ ChatGPTを利用し、要約された質問です(原文:MySQL5.1の文字化け)
MySQL5.1文字化け対処方法とは?
このQ&Aのポイント
MySQL5.1で発生する文字化けの対処方法を教えてください。
携帯の絵文字データをSJISのバイナリでスクリプトに埋め込んだら文字化けが発生しました。
INSERT文を実行する際に文字化けが発生する問題があります。正しい変換方法を教えてください。
多くの方が同様の質問をされていたのですが、一致する問題が見つけれなかったので、ご存じの方がおられたら教えて下さいm(_ _)m
(環境)
PHP 5.2.8
ZendFramework 1.5.1 から Pdo Mysqlを使用
文字コード:SJIS
Mysql 5.1
文字コード:EUC-JP
(質問内容)
携帯の絵文字データをSJISのバイナリでスクリプト中に埋め込むため、スクリプトの文字コードをSJISに統一したところ、文字化けが発生しました。
SET NAMES SJIS のSQLを発行することで表示は正しくできるようなったのですが、新たにレコードを追加しようとすると文字化けが発生します。
例)情報 → 情表
insertを行う前の文字コードをSJIS,SJIS-win,EUCと変えてみましたが、SJISもしくはSJIS-winの場合は上記の例のとおりとなり、EUCにすると完全な文字化けとなりました...
おそらく登録時にMYSQLがSJIS→UTF8→EUCに変換される時に正しく変換されていないものと思われるのですが、どなたか対処方法をご存じないでしょうか?
よろしくお願いします。
お礼
mpx様 回答ありがとうございました。 mysql_set_charsetで検索してわかったのですが、SET NAMESはSQLインジェクションの恐れがあるので使わない方が良いのですね(汗 Zend Framework環境で mysql_set_charset 関数を使ってみたのですが、コネクションがないとのワーニングがでました... 一応 Zend_Db_Adapter_Pdo_MysqlクラスからgetConnection関数で得たものを第2引数に割り当ててみたのですが無理でした(T T もし、申し訳ないですが、zend_frameworkあたりに関してもご存じでしたら教えて下さい。