2010年10月 1日

[mysql 15409] Re: 複数の文字コードが混在している時のmysqldump の文字コード指定

ひらつかさん

ありがとうございます。

> sjisのテーブルにどのようにしてこれらのデータを入れましたか?

まず、(波線、表、まるいち、はしごだか)を秀丸エディタにて、Shift_JIS、EUC、UTF-8 にて保存。
以下のコマンドにて、インサートしました。

# mysql test -e "insert into t_sjis values('`cat sjis.txt`');"
--default-character-set=sjis
# mysql test -e "insert into t_ujis values('`cat ujis.txt`');"
--default-character-set=ujis
# mysql test -e "insert into t_utf8 values('`cat utf8.txt`');"
--default-character-set=utf8

> sjisではなく、cp932でテーブルを作って試してみるといかがでしょう?
>
> また、cp932でテーブルを作った場合に
> --default-character-set=utf8 でダンプ、リストアをすると
> どうなるでしょう?

# mysqldump test --default-character-set=utf8 > dump.utf8
# mysql test --default-character-set=utf8 < dump.utf8

のようにやってみましたところ、
cp932 - OK
sjis - NG (後半2文字が化ける)
ujis - NG (まるいち のみ化ける)
utf8 - OK

という結果になりました。dump.utf8 の中身を見てみると既に化けています。

やっぱり複数文字コード混在環境では、mysqldump は
--default-character-set=binary を付けるしかないんですね。

binary にして問題が無いと仮定すると、そもそもmysqldumpに文字コード指定オプションがあること自体
意味がわからなくなってきました。

文字コード毎に、mysqldump を分けて実行するしかないのでしょうか。

木下


投稿者 xml-rpc : 2010年10月 1日 11:21
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/98776
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。