ホーム > mysql > mysqlのパーサのわからないところ

mysqlのパーサのわからないところ

  • 投稿者: chiba
  • 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でマルチバイトの処理やってた。

コメント:0

コメントフォーム
入力した情報を記憶する

トラックバック:0

この記事のトラックバック URL
https://blog.everqueue.com/chiba/2008/12/30/36/trackback/
トラックバックの送信元リスト
mysqlのパーサのわからないところ - へぼい日記 より

ホーム > mysql > mysqlのパーサのわからないところ

検索
フィード
メタ情報

ページの上部に戻る