しばらく前に各所で暴れまわった野原燐がどうもこちらに近づいているらしい。
skip-character-set-client-handshake
「オープンソース徹底活用 MySQL4/PHP5によるWebデータベース構築」(isbn:9784798008608 発売日:2004/09/13)という長い題の本を前に買っていたので、(この本はwindows用だがlinuxでも使えた*1)読んでみた。
おお、がんばってほしい。エントリを読んでみるといろいろ手探りでやっている感じが伝わって面白い。おいらもこういう時期があったよなとか思ったりなんだり。んで気になったところ。
mysqlは4.1から変更があり、 文字コードの自動変換機能が追加された、と。それにより日本語はだいたい文字化けする?と。しかし、skip-character-set-client-handshakeを追加すると大丈夫ということで、だれでも体験することのようだった。
確かにその通りなのだが野原の解法よりもむしろqueryごとにset names utf8
を投げたほうがよい。初学者は正しく明示的に文字コードのセットを行う方法を学んだほうが、後々困らなくてすむだろう。どの環境でもmy.cnfをいじれるわけではない。
ついでに書いておけば、PHPとHTMLとも文字コードは明示的に統一するべきだ。php.iniのmbstring関連とか、出力時にheader関数でhttpヘッダで出力文字コードを指定するとかやるべき。skip-character-set-client-handshakeはそれらの文字コード指定の役割と影響範囲を理解したうえで自分が楽をするために使うべき設定だと思う。基本的に環境が限定できないのならばこの手の楽チン設定は使うべきではないと思うのだが。
たとえ野原燐といえども、やるからには正しく覚えて、良いものを作っていただきたいものだ。
しかし、
ウィンドウズ用サンプルプログラム(付録CDについているもの)をlinuxで使う場合、元は文字コードがsjisなので
というのも酷いな。もはやwwwで使うものは無条件で文字コードはUTF8にしてよいと思うのだが。