2012年5月31日木曜日

Vimで文字コード変更

MySQL4にEUCで入っているデータをUTF-8に変換しようとして、
mysqldumpでSQL出してnkfで文字コード変換した。

それを流し込んだところ、SQLの構文エラーが出る。
よく見てみたところ、SQL内の文字列の終わりのクォーテーションが無い。
(1,2,'あいうえお1かきくけ,'さしすせそ')
みたいになっている。

nkfの変換前のデータをあらためて調べてみると、
その部分にマルチバイト文字の前半がゴミとして挟まっていた。
(1,2,'あいうえお1かきくけゴミ','さしすせそ')
こんな感じ。
nkfだとそのゴミを直後のクォーテーションと絡めて消してしまうようだ。

さほど巨大ではないSQLだったので、Vimで変換した。
Vimで開き、
:e ++enc=eucjp-ms
:set fileencoding=utf8
:wq!
これでEUC→UTF-8に変換して保存できる。

該当箇所のゴミは「?」になるようだ。
(1,2,'あいうえお1かきくけ?','さしすせそ')

0 件のコメント:

コメントを投稿