MySQLの文字化け対策

PHP, MySQL5, Database, 文字コード, 文字化け, UTF-8

09:05:11, by dozo Email , 45 words, 10175 views   Japanese (JP) del.icio.us

今後はこの方向で行こう。

(ノ・・)ン。。。。。。(((●コロコロッ

init-connectがポイント。
[mysqld]
default-character-set = utf8
init-connect = "SET NAMES 'utf8'"
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8



_〆(。。)コウイウホウホウモアルノカ…

[More:]



MySQL4.1以降、MySQLの文字化け問題はめっきり無くなった。
それもこれもSET NAMES Statementのおかげ。
しかし、フレームワークやPDOを使うとどうしても困る場面がある。
それは

SET NAMESの問い合わせタイミング


接続が確立した段階で一番最初に
SET NAMES 'utf8'

と打ちたいわけだが、
フレームワークなどを利用していると、
ORMなどを経由してデータを取ってくる時に、
SET NAMESを打つスキがない時がある。
それだけのために継承したコントローラなどを用意するのはちょっとバカバカしい。

PDOに至ってはDSNにcharsetというパラメータが存在するくせに、
全然使ってくれない。
(PEAR DBのcharsetパラメータはちゃんと動く)

( ̄-  ̄ ) ウーン

アプローチをかえてMySQL側から探してみると、
良いオプションがあった。
それが
init-connect


init-connectとは?
接続が確立した段階で実行されるstatementを登録するオプション

これでアプリケーションが接続を試みて成功した段階で、
[SET NAMES 'utf8']が実行される。
Webアプリケーション側から発行するわけではないので、
クエリ発行一回分のオーバーヘッドも軽減できる。
(まぁたいしたことはないが。)

今後文字コードの対策はこの方法で対策を取ることにしよう。
レンタルサーバとかではちょっと難しいかもしれないが。


Trackback address for this post:

http://hain.jp/htsrv/trackback.php/167

Comments, Trackbacks:

No Comments/Trackbacks for this post yet...

Leave a comment:

Your email address will not be displayed on this site.
Your URL will be displayed.

Allowed XHTML tags: <p, ul, ol, li, dl, dt, dd, address, blockquote, ins, del, span, bdo, br, em, strong, dfn, code, samp, kdb, var, cite, abbr, acronym, q, sub, sup, tt, i, b, big, small>
(Line breaks become <br />)
(Set cookies for name, email and url)
(Allow users to contact you through a message form (your email will NOT be displayed.))
This is a captcha-picture. It is used to prevent mass-access by robots.

Please enter the characters from the image above. (case insensitive)

powered by b2evolution

shinobi

Neighbors
Relative
Favorites

極論istの技術屋を始めて早幾年。 流れの速い業界の波にもまれながらも精一杯生きている様をとくとごらんあれ。

Archives
スポンサー

Latest bookmark
Search

Categories

Who's Online?
Misc
Syndicate this blog XML

Valid XHTML 1.0! Valid CSS! Valid RSS 2.0! Valid Atom 1.0!