- 2008-12-30 (火) 6:28
- mysql
ここんところ文字コードとmysqlの関係が頭から離れずにいろいろと調査中だったりします。
で。mysqlのパーサのコードを読んだりもしてるわけなのですがどうしてもわからないことが。
サーバサイドPrepareを使わないで、
character-set-clientが’sjis’でフィールドのキャラセットが’utf8′のときに
0×815f(\)が0×5c(\)ではいり
0×955c(表)が0xE8A1A8(表)
できちんと入ること。
SQLParse => utf8化
の順番であれば、0×955cのあとの’がエスケープされてエラーになりそうだし
utf8化 => SQLParse
の順番であれば、0×815f(=>0×5c)のあとの’がエスケープされてエラーになりそう。
でもエラーにならない。うーむ。ちなみにコード読んだ限りではParse後にutf8化してるように感じるけど・・・。
yaccがマルチバイトなencodingを認識してパースしてくれているんだろうか。ぐふう。
まぁはっきりいってコードの読みがまだまだ浅いのとyacc(bison)をちゃんと理解しないとわかるはずもないんだろうけど。
追記1: あ、おk。分かった。sql/sql_lex.ccのget_textでマルチバイトの処理やってた。
- Newer: WALL・Eをみてきた
- Older: UTF-16時代のエスケープ処理
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://www.geminium.com/chiba_blog/2008/12/30/36/trackback/
- Listed below are links to weblogs that reference
- mysqlのパーサのわからないところ from へぼへぼCTO日記
(0)
(0)
(0)
(0)
Total: 0