mysql:624
From: <takeshi@xxxxxxxxxx>
Date: Fri, 22 Jan 1999 16:57:43 +0900
Subject: [mysql 00624] Re: MyODBC EUC Ver 0.02
From: Masato Toyoshima <wm@xxxxxxxxxx> Subject: [mysql 00623] Re: MyODBC EUC Ver 0.02 Date: Fri, 22 Jan 1999 15:49:40 +0900 Message-ID: <199901220646.PAA01300@xxxxxxxxxx> wm> >UPDATEとINSERT時にODBCがサーバー側の型を保持しているのなら、 wm> >できるんでしょうね。もっとソースを見てみます。 wm> あぁ、そうか。 wm> ODBCドライバが元々SJISしか前提にしていないから、特に型を取得 wm> していないかも知れないわけですね。 wm> もし型を保持していなければ、UPDATEやINSERTのSQL発行の時点で、 wm> 先に型を取得して、バイナリ型かどうかの評価が必要になるという wm> わけですね。 もと source は SJIS 前提でもなくて (単なる 8bit clean ^^; 本当にSJIS通すなら少し変更が必要. このMLにパッチが昔流れました. ) ODBC は型を持たせて一応やり取りするはずですが、 結局、ユーザーが投げた値が、ほんとに日本語なのかバイナリか 分からない点だと思います。 char binary にしろ、BLOBにしろ、MySQL に (例えば jpegファイルなど) insert するとき、特殊文字はエスケープしなければならないのですが、 それはユーザー側がやる物として特別 MyODBC, MySQL サーバーの方では 行っていないはず。 で、とりあえずの対処として、 a. nkf などがやっているように、100% ではないにしろ、 扱う前に 日本語文字かどうかを判定してみる。 X nkf や less みたいに判定のために見る文字数を多く取る事ができないので、 判定ミスが多くなるかも b. バイナリを入れてもらうときは、文字の最初に、漢字コード以外のchar何バイトか、 ユーザー側につけてもらう。(ascii文字でも日本語文字でもないような文字を。) それがあれば無変換で送り(受信し)、なければ ascii+日本語 X ユーザーが面倒かな? # myodbc の sjis パッチは、日本語文字と推定して、 # ある文字だけ '\' してるんでしたっけ? # ある種の自動判別みたいなかんじ? # だったら、自動判別でも結構行きそうに思いますが... 村上 毅 takeshi@xxxxxxxxxx PGP fingerprint = 45 5D 54 12 B4 55 77 7F D4 52 66 EC 03 3F 1B E9 [ http://www.softagency.co.jp/mysql/ ] [ MySQL ML: mysql-help@xxxxxxxxxx ]
618 1999-01-22 12:23 ["Satoshi Tatsuoka" <] Re: MyODBC EUC Ver 0.02 623 1999-01-22 15:49 ┗[Masato Toyoshima <wm] -> 624 1999-01-22 16:57 ┗[<takeshi@xxxxxxxxxx>]