mysql:15410
From: HIRATSUKA Sadao <HIRATSUKA Sadao <hiratsuka.sadao@xxxxxxxxxx>>
Date: Fri, 01 Oct 2010 13:27:07 +0900
Subject: [mysql 15410] Re: 複数の文字コードが混在している時のmysqldump の文字コード指定
ひらつかです。 On Thu, 30 Sep 2010 19:21:12 -0700 Yukio Kinoshita <inahou@xxxxxxxxxx> wrote: > > sjisのテーブルにどのようにしてこれらのデータを入れましたか? > まず、(波線、表、まるいち、はしごだか)を秀丸エディタにて、Shift_JIS、EUC、UTF-8 にて保存。 > 以下のコマンドにて、インサートしました。 > # mysql test -e "insert into t_sjis values('`cat sjis.txt`');" > --default-character-set=sjis なるほど、入りました。 > やっぱり複数文字コード混在環境では、mysqldump は > --default-character-set=binary を付けるしかないんですね。 お作法としては ・丸付き数字などを使う場合は sjis、ujisは使わず、cp932、eucjpms、utf8を使う ・混在環境では --default-character-set=utf8 でdump/restoreする ということになると思います。 cp932のテーブルをutf8でdumpするパターンはうまくいっていますね。 > binary にして問題が無いと仮定すると、そもそもmysqldumpに > 文字コード指定オプションがあること自体 > 意味がわからなくなってきました。 binaryでとった場合、dumpファイルをエディタで開いたときに よほど器用なエディタでない限り、一部は読めて、一部は読めない という状態になると思います。 > 文字コード毎に、mysqldump を分けて実行するしかないのでしょうか。 今回はsjis、ujisのテーブルに本来入れてはいけない文字を入れた という状況ですので、お作法で述べた「utf8に変換して全部まとめて dumpする」ということができません。(utf8に変換できない不正な文字がある) そのため、キャラクタセットごとに分けて実行するのがよいと思います。 念のためですが、mysqldumpはテーブル指定でのdumpが取れるので mysqldump --default-character-set=sjis [database名] [sjisのテーブル名] mysqldump --default-character-set=ujis [database名] [ujisのテーブル名] とします。 -- 平塚貞夫 hiratsuka.sadao@xxxxxxxxxx
15406 2010-09-30 14:04 [inahou <inahou@xxxxx] 複数の文字コードが混在している時のmysqldump の文字コード指定 15407 2010-10-01 04:42 ┗[inahou <inahou@xxxxx] 15408 2010-10-01 09:32 ┗[HIRATSUKA Sadao <hir] 15409 2010-10-01 11:21 ┗[Yukio Kinoshita <ina] -> 15410 2010-10-01 13:27 ┗[HIRATSUKA Sadao <hir] 15411 2010-10-02 05:14 ┗[Yukio Kinoshita <ina]