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

mysql:626

From: 民斗 <民斗 <tommy@xxxxxxxxxx>>
Date: Fri, 22 Jan 1999 18:48:43 +0900
Subject: [mysql 00626] Re: MyODBC EUC Ver 0.02

民斗です。

[Subject: [mysql 00625] Re: MyODBC EUC Ver 0.02]
[Date: Fri, 22 Jan 1999 18:19:44 +0900  From:Masato Toyoshima]

> あ、そうか。全然分かっていませんでした。>型のことが
> 失礼しました。
> CHAR(M) [BINARY] 
> VARCHAR(M) [BINARY] 
> ちょっと分からないのですが、
> MySQLでは文字列を扱う型とバイナリが同じということなんでしょうか?
> 特に区別しては、扱っていないという認識で正しいですか?

BINARY 属性がついているかどうかは MySQL のクライアントライブラリから
確認できますが、利用者がどう使っているかは計算機からはわからないと
いうことだと思います。

本当にバイナリデータを格納したいから BINARY をつけているのか、それとも
大文字/小文字を区別したくて BINARY をつけているのか…。

> SJISならバイナリであろうが、日本語であろうが、
> そのままで、\をエスケープすればOKなんですね。
> でも、MySQL側がEUCということになると、バイナリと、日本語=文字との
> 区別がつかないと、コード変換が必要かどうかが?なので、処理が難しい
> ということでしょうか?

そうですね。問題はコード変換でしょう。

> どこかで、バイナリであることを明示することが必要なのかな?
> ODBC側で、文字列とバイナリの区別があれば、問題ないような気が
> しますが、どうなんでしょうか?
> 逆にMySQL->ODBC->の流れの方が心配のような気がしてきました。

ああ、そういう問題もありますね…。

SJIS の自動判別で格納できたとしても、取り出すときに、SJIS→EUC 変換
された文字列なのか、たまたま EUC 文字列としても正しいと見なすことが
できるバイナリデータなのか、やはり判断できないですし…。

次の方法はどうでしょう?

・バイナリデータ格納時には、先頭に 0x01 (でもなんでもいいけど) をつけて
  格納する。
・取り出し時には先頭に0x01 があれば、それを取り除いてコード変換しないで
  取り出す。
・先頭に 0x01 がなければ、EUC→SJIS コード変換して取り出す。


ん〜、あまり美しくないような気も…。
--
民斗 <tommy@xxxxxxxxxx>

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

       625 1999-01-22 18:19 [Masato Toyoshima <wm] Re: MyODBC EUC Ver 0.02                 
->     626 1999-01-22 18:48 ┗[民斗 <tommy@xxxxxxxx]                                       
       629 1999-01-22 22:02  ┗[Masato Toyoshima <wm]                                     
       640 1999-01-24 23:14   ┗[民斗 <tommy@xxxxxxxx]                                   
       642 1999-01-25 19:32    ┗[Masato Toyoshima <wm]