mysql:3192
From: Toshihiro Fujimori <Toshihiro Fujimori <fuji@xxxxxxxxxx>>
Date: Wed, 07 Feb 2001 21:46:08 +0900
Subject: [mysql 03192] Re: バイナリーデータの扱いについて
Mitsuru Marunoさんの<003101c090b3$abb02f50$6b01a8c0@maru>から >INSERT INTO文でバイナリを16進表記文字列に変換して挿入できました。 一応、回避策が見つかったということで、 以下蛇足になるかもしれませんが・・・ サーバのソースを眺めてみると、エスケープ処理が含まれる関数では、 ほとんどが、 1. マルチバイト文字の処理 2. エスケープ処理 という順番になっていて、しかも 1. にマッチした場合は、 2. はスキップされています。 ということで、SJIS 版サーバで 0x88 0x5c という文字列は マルチバイト文字の方にマッチしてしまい、エスケープを 取り除く処理がスキップされてしまうのだと思われます。 ただ、そうなると、php で addslashes() を使った場合も、 同じ現象になるはず・・・? # 以下、さらに余談 Mitsuru Marunoさんの<005301c090a5$9562fd30$6b01a8c0@maru>から >ソースを見てみましたが、libmysqlプロジェクトでは、やはり >mysql_real_escape_string関数をエクスポートしていませんでした。 >また、mysql_real_escape_stringとmysql_escape_stringを見てみると >両者ともmysql_sub_escape_string関数を呼び出しているだけので、 >内容的には全く同じ物ですね。。。 エクスポートされてなくても、static link で使えるのでは ないでしょうか。 ドキュメントにも以下のように書かれてますし。 >> 22.1 MySQL C API >> C API コードは MySQL とともに配布されます。これは >> libmysqlclient ライブラリに含まれ、C プログラムから >> データベースへのアクセスを許します。 それから、ソースにあるように、mysql_escape_string() とは違い、 mysql_real_escape_string() の処理は charset によって変化するので、 例えば、0x95 0x5c というバイナリを変換する場合、 SJIS の場合、マルチバイトとして扱われるので、そのまま -> 0x95 0x5c EUC の場合は、エスケープ処理される -> 0x95 0x5c 0x5c となるように思えます。 最終的には、INSERT して SELECT すると、 SJIS・・・ そのまま -> 0x95 0x5c EUC ・・・ エスケープを取り除く -> 0x95 0x5c となって、同じ結果ではありますが。 -- Toshihiro Fujimori (藤森 利浩) Taisei Inc. PGP Key ID: 0xBE1C7568 (DH/DSS) http://www.rcc.or.jp/%7Efuji/
3156 2001-02-05 16:31 ["Mitsuru Maruno" <ma] バイナリーデータの扱いについて 3158 2001-02-05 23:19 ┣[Toshihiro Fujimori <] 3160 2001-02-06 10:26 ┃┗["Mitsuru Maruno" <ma] 3161 2001-02-06 10:43 ┃ ┗[Yoshiyuki Asano <asa] 3162 2001-02-06 11:06 ┃ ┗["Mitsuru Maruno" <ma] 3163 2001-02-06 12:56 ┃ ┗[Yoshiyuki Asano <asa] 3164 2001-02-06 13:24 ┃ ┣[Yoshiyuki Asano <asa] 3165 2001-02-06 13:32 ┃ ┗["Mitsuru Maruno" <ma] 3166 2001-02-06 14:07 ┃ ┗[Yoshiyuki Asano <asa] 3168 2001-02-06 14:30 ┃ ┣["Mitsuru Maruno" <ma] 3169 2001-02-06 14:52 ┃ ┗[Akihiko Shinohara <s] 3170 2001-02-06 15:09 ┃ ┣[Yoshiyuki Asano <asa] 3171 2001-02-06 15:11 ┃ ┗["Mitsuru Maruno" <ma] 3172 2001-02-06 17:02 ┃ ┗[Tomohiro KATO <tomop] 3173 2001-02-06 17:19 ┃ ┗["Mitsuru Maruno" <ma] 3174 2001-02-06 17:28 ┃ ┣[Tomohiro KATO <tomop] 3182 2001-02-07 10:11 ┃ ┃┗["Mitsuru Maruno" <ma] 3175 2001-02-06 17:29 ┃ ┗["Mitsuru Maruno" <ma] 3179 2001-02-06 23:45 ┃ ┗[Toshihiro Fujimori <] 3180 2001-02-07 00:41 ┃ ┣[Toshihiro Fujimori <] 3183 2001-02-07 10:30 ┃ ┗["Mitsuru Maruno" <ma] 3184 2001-02-07 10:50 ┃ ┗[Akihiko Shinohara <s] 3185 2001-02-07 11:13 ┃ ┗["Mitsuru Maruno" <ma] 3186 2001-02-07 12:11 ┃ ┗["Mitsuru Maruno" <ma] 3187 2001-02-07 12:57 ┃ ┣[楠吉彦 <moredebu@xx] 3188 2001-02-07 15:29 ┃ ┣[Akihiko Shinohara <s] 3189 2001-02-07 15:35 ┃ ┃┗[Akihiko Shinohara <s] 3190 2001-02-07 16:02 ┃ ┃ ┗["Mitsuru Maruno" <ma] 3191 2001-02-07 18:18 ┃ ┃ ┗[Akihiko Shinohara <s] -> 3192 2001-02-07 21:46 ┃ ┗[Toshihiro Fujimori <] 3195 2001-02-08 01:16 ┃ ┗[とみたまさひろ <tomm] 3177 2001-02-06 23:05 ┗[Tomohiro Takahashi <]