[前][次][番号順一覧][スレッド一覧]

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>]