mysql:86
From: "民斗 " <"民斗 " <tommy@xxxxxxxxxx>>
Date: Mon, 16 Mar 1998 01:55:27 +0900
Subject: [mysql 86] Re: UJIS & SJIS
SJIS 対応のパッチをつくってみました。マルチバイト文字を汎用的に処理 できる仕組みを作って、それを使用して SJIS 対応しています。 ですので、名前は SJIS パッチではなくて MB(MultiByte)パッチです。 この一つのパッチで UJIS にも SJIS にも対応します。 http://www.valley.ne.jp/~tommy/mysql/patch/ にあります。 configure 時に --with-charset= で ujis または sjis を指定して ください。 前の UJIS パッチの部分に加えて、オリジナルソース中にある BIG5 コード 対応部分を変更したものです。動きを良く理解せずに見よう見まねで変更した ので、信頼性はちょっと怪しいかもしれません (^^; …ということで、前の UJIS パッチもそのまま置いてあります。 -=-=-=-=- [Subject: [mysql 85] Re: UJIS & SJIS] [Date: Sat, 14 Mar 1998 20:47:04 +0900 From:takeshi@xxxxxxxxxx] > サーバーに変換機能があれば、クライアントは触らなくて良いと思ったのですが、 > クライアントの漢字コードを自動で最初に判断するすべがありませんね。 そうなんですよね。ある程度文章が長ければかなりの確率で特定できるんですが…。 > 結局、引数か設定ファイルなどで、外部の漢字コードを指定するはめになるので、 > サーバー固定と等価でした。 サーバ側で対応するのであれば、1つのサーバが、接続するクライアント毎に 文字コードを判断するよりは、引数等でポート番号と文字コードを指定して、 UJIS と SJIS の2つサーバを起動して『SJIS 使いたい人(クライアント)は こっちのポートにつないでね』とした方が良さそうですね。 で、SJIS の方は内部で UJIS に変換して、UJIS と同じデータベースを見ること ができる。と。 > libmysqlclient.{a|so} を、漢字に対応させると後々いいと思います。 > MyODBC は libmysqlclient を使用していたはずですし。 > MS-Win 用に nkf.dll なるものもあるらしいです。(UNIX で libnkf ないかな?) > M$ で開発できる方っています? libmysqlclient 中のどれが関係するのか調べてませんが、libmysql.c 中の mysql_escape_string() は上述の MB パッチで日本語対応するはずです。 > UNIX がわで、SJIS を MySQL が喋った場合の対応策が発生しますが。 > lib を変えて、コンパイルし直しはこの際いた仕方ないことでしょうか。 これは、クライアント側が SJIS → UJIS しているのに、サーバが実は SJIS を 喋っているという状況を考えているのでしょうか。 そこまで考えなくてもいいのではないでしょうか (^^; 『運用する漢字コードには気をつけましょう』ということで…。 > 漢字コードと host の対応表みたいなのを、暫定的に見に行かせるようなのは > やぼったいですかね? > host,user,db とともにイニシャル時に読み込んで動作する、、。 サーバはそのテーブルの内容に応じて、動的に文字コードを変換するという ことですよね。ん〜、やぼったいかどうかはともかく、実装するのは結構 大変かも…。 -=-=-=-=- 文字コードの変換の問題点を一つ思い出しました。文字でないバイナリデータの 扱いです。イメージ形式などをデータとして保存する場合、BLOB を使用すると 思いますが、そのデータ中にたまたま漢字コードに一致するものがあっても、 それまで変換されちゃ困りますよね。でも BLOB 中に文字を入れたい場合もある でしょう。その場合は変換された方がいいですね。 現状では、項目の値を変換していいものか、いけないものなのかが、プログラム では区別がつかないです。人間がそのデータをどう処理するのかに依存するので…。 オリジナルの "set optoin character set" はそこまで考えずに、全部変換して いるようでしたが…。 -- 民斗 <tommy@xxxxxxxxxx>
-> 86 1998-03-16 01:55 ["民斗 " <tommy@xxxxx] Re: UJIS & SJIS 87 1998-03-19 12:35 ┗[<takeshi@xxxxxxxxxx>]