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]