JISエンコードの入力¶
JISエンコードの入力なんてしないもので、面倒だったのでメモ。普段はja_JP.UTF-8な環境に生活しているのです。例えば、日付をdateコマンドで実行します。
$ date
2009年 3月 3日 火曜日 23:58:52 JST
コンソールにはようされますな。これをカーソルでコピーして、viなどで貼り付けると、UTF-8になってしまいます。出力をリダイレクトしたファイルをfileコマンドで見ると分かります。
$ date > hoge
$ more hoge
2009年 3月 4日 水曜日 00:01:09 JST
$ file hoge
hoge: UTF-8 Unicode text
じゃあ、これをiconvで変換してみます。
$ date | iconv -f utf8 -t ISO2022JP
2009年 3月 4日 水曜日 00:03:10 JST
コンソールじゃわかりません。同様にリダイレクトしてみます。
$ date | iconv -f utf8 -t ISO2022JP > fuga
$ more fuga
2009年 3月 4日 水曜日 00:03:52 JST
$ file fuga
fuga: ASCII text, with escape sequences
viで開いてみるとさらに一目瞭然です。
2009年 3月 4日 水曜日 00:04:49 JST
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"hoge" 1 line, 43 characters
2009^[$BG/^[(B 3^[$B7n^[(B 4^[$BF|^[(B ^[$B?eMKF|^[(B 00:03:52 JST
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"fuga" 1 line, 61 characters
じゃあ、このエスケープされたviの画面をコピペするとどうなるか、というと、エスケープシーケンスが効かなくなってしまいました。
$ cat fuga
2009年 3月 4日 水曜日 00:03:52 JST
2009^[$BG/^[(B 3^[$B7n^[(B 4^[$BF|^[(B ^[$B?eMKF|^[(B 00:03:52 JST
$ file fuga
fuga: ASCII text, with escape sequences
じゃあ、他のファイルにこの文字列をコピペさせるには?ということで、リダイレクトすると出来るわけです。
2009年 3月 4日 水曜日 00:04:49 JST
2009^[$BG/^[(B 3^[$B7n^[(B 4^[$BF|^[(B ^[$B?eMKF|^[(B 00:03:52 JST
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"hoge" 3 lines, 105 characters
面倒だなぁ。もっと楽にやる方法はないだろうかねぇ。