- 2008/12/30 火曜日 6:28:13
- mysql
ここんところ文字コードとmysqlの関係が頭から離れずにいろいろと調査中だったりします。
で。mysqlのパーサのコードを読んだりもしてるわけなのですがどうしてもわからないことが。
サーバサイドPrepareを使わないで、
character-set-clientが’sjis’でフィールドのキャラセットが’utf8’のときに
0x815f(\)が0x5c(\)ではいり
0x955c(表)が0xE8A1A8(表)
できちんと入ること。
SQLParse => utf8化
の順番であれば、0x955cのあとの’がエスケープされてエラーになりそうだし
utf8化 => SQLParse
の順番であれば、0x815f(=>0x5c)のあとの’がエスケープされてエラーになりそう。
でもエラーにならない。うーむ。ちなみにコード読んだ限りではParse後にutf8化してるように感じるけど・・・。
yaccがマルチバイトなencodingを認識してパースしてくれているんだろうか。ぐふう。
まぁはっきりいってコードの読みがまだまだ浅いのとyacc(bison)をちゃんと理解しないとわかるはずもないんだろうけど。
追記1: あ、おk。分かった。sql/sql_lex.ccのget_textでマルチバイトの処理やってた。
- 新しい: WALL・Eをみてきた
- 古い: UTF-16時代のエスケープ処理
コメント:0
トラックバック:0
- この記事のトラックバック URL
- https://blog.everqueue.com/chiba/2008/12/30/36/trackback/
- トラックバックの送信元リスト
- mysqlのパーサのわからないところ - へぼい日記 より