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

mysql:817

From: "Y. Tsutsui" <"Y. Tsutsui" <tutui@xxxxxxxxxx>>
Date: 20 Apr 99 01:07:29 +0900
Subject: [mysql 00817] Re: Shift JIS での文字化け

堤井です。

>これは MySQL から直接テキストに次のように落としても
>起こるのですが…
>
>% echo "select * from TABLENAME" | mysql DB_NAME > text.txt
>
>このテキストファイルを見ても同じように化けています。
>これも 「ソ」 が \ を含むからでしょうか。

kterm等の漢字表示可能な端末で環境変数LANGをja.JP_SJISとかにして
(linuxはちょっと違った気が..)
%mysql DB_NAME
mysql>select * from TABLENAME;
とかやっても化けているなら入力時の問題だと思います。

>また、他にも \ を含む文字があるんでしょうか。

「表」とかがそうです。私はいつも「漢字表示OK?」という文字列で
テストしています。

>この問題の原因は、2バイト文字の中には \ が含まれる
>ものがあって、\ は MySQL ではエスケープ文字なので

PHPのエスケープ文字だと思います。

>たとえば 「ソルバ」 の場合は 「ル」の1バイト目が

「ソ」の2バイト目です。

>エスケープされてしまい、そこから1バイトずつずれてしまう
>から、ということですよね。
>
>もし MySQL のデータをテキストファイルに落としたいときには、
>\ の処理をしなければならないんですね。

落とすときは
mysql> select * into outfile 'text.txt' from TABLENAME;

でいけば、この間にmysqlが\エスケープを行うことはありません。
逆にデータを格納するときに

mysql> load data infile 'text.txt' into table TABLENAME;

なら文字化けも起こりません。

プレック研究所 システム開発室 堤井泰志
tutui@xxxxxxxxxx





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

->     817 1999-04-20 01:07 ["Y. Tsutsui" <tutui@] Re: Shift JIS での文字化け              
       820 1999-04-20 01:32 ┗["ONDA, Takashi" <tak]