mysql:833
From: 民斗 <民斗 <tommy@xxxxxxxxxx>>
Date: Fri, 23 Apr 1999 02:10:42 +0900
Subject: [mysql 00833] Re: 続・ Shift JIS での文字化け
民斗です。 [Subject: [mysql 00830] Re: 続・Shift JIS での文字化け] [Date: Thu, 22 Apr 1999 12:51:15 +0900 From:民斗] > 最近、SJIS 環境で MySQL をいじってないので、MySQL 自体に問題がある可能性 > も否定できないのですが、基本的な確認事項を…。 気になったので MySQL 3.22.21 を --with-charset=sjis で make して試してみ ました。 そしたらなんと、私のところでも怪しげな現象が発生してしまいました。 load data infile でデータを読み込んだ時に、文字化けしてデータが格納され てしまいました。 ----用意した sjis ファイル---- 表 十 能 ----------------------------- ---オペレーション--- % mysql test mysql> create table test (str char(20)); mysql> load data infile "/tmp/dd.txt" into table test; Query OK, 2 rows affected (0.02 sec) Records: 2 Deleted: 0 Skipped: 0 Warnings: 0 mysql> select * from test; +------+ | str | +------+ | 表 | | | +------+ 2 rows in set (0.01 sec) -------------------- 色々調べてみたところ、うちの環境の gcc のバクのようで、次のソースをコン パイルする時に -O をつけるか否かで動きが異なるのが原因でした。 -----サンプル---- #include <stdio.h> typedef unsigned char uchar; #define issjishead(c) ((0x81<=(uchar)(c) && (uchar)(c)<=0x9f) || (0xe0<=(uchar)(c) && (uchar)(c)<=0xfc)) int main() { int a = -107; printf("%d\n", issjishead(a)); } ----------------- ----実行結果--- % cc -v Reading specs from /usr/local/lib/gcc-lib/i386-pc-solaris2.6/2.8.1/specs gcc version 2.8.1 % cc -o aa aa.c % ./aa 1 % cc -O -o aa aa.c % ./aa 0 --------------- sql/Makefile の CXXFLAGS から -O を取り除いて sql_load.cc をコンパイルし 直したところ正常動作が確認できました。 もしかすると egcs では正常かもしれません。が、確認してません。 これが恩田さんのところで起きている現象と同じかどうかはわかりませんが、 一度試してみるのもいいかもしれません。 -- 民斗 <tommy@xxxxxxxxxx>
823 1999-04-21 22:53 ["ONDA, Takashi" <tak] 続・ Shift JIS での文字化け 829 1999-04-22 12:47 ┣[<takeshi@xxxxxxxxxx>] 830 1999-04-22 12:51 ┗[民斗 <tommy@xxxxxxxx] 832 1999-04-22 23:30 ┣["ONDA, Takashi" <tak] -> 833 1999-04-23 02:10 ┗[民斗 <tommy@xxxxxxxx] 834 1999-04-23 09:25 ┣[舘山 聖司 <tateyan] 840 1999-04-28 13:17 ┗[民斗 <tommy@xxxxxxxx]