先日から作っていたファイルフォーマット及び文字コード変換用のスクリプトがようやく形になった(汗)。
元のファイルの中に複数の形式のレコードが混在していたので面倒だったけど、そこはなんとか力技で押さえ込んだ。
てこずったのが特定の文字(全角の長音記号)が元のコード(SJIS)から他のコード(EUC,UTF-8)に変換できなかったこと。
いろいろ調べてみたけど皆さん苦労していらっしゃるようで上手い解決策が見つからなかった。
仕方が無いのでテキストエディターで開いて全角のハイフンに一括変換をかけることで対処した。
元のファイルが三十数個程度だったのでこんな荒業が使えたけど、これがファイル数が三桁だったらやりたくないよなぁ・・・
どうにかして自動で変換できないものか・・・
4 comments to this article
ちょろ
on 2014 年 10 月 15 日 at 6:25 PM -
なんか前にやった気がするけどどうしたっけかなぁ・・・
SJIS関係だと以前jcode.plはダメだけどjcode.pmはオッケーとかあったのは覚えてるけど。
あとは最近メールのデコード書いたのではuse utf8してuse Encodeとかエンコード関係は色々やってるけどちゃんと覚えてない。
なんか昔の.NET系もあれこれあったんで色々な事がごちゃごちゃになってます。
tan
on 2014 年 10 月 16 日 at 10:01 AM -
>ちょろさん
変換自体は面倒なのでnkfを使っています。
”ー”以外にも変な文字に変換される文字が散見されますが、個別対応をするつもりです。
どうせ一度変換してしまえば終わりなので(汗)
ちょろ
on 2014 年 10 月 16 日 at 1:02 PM -
>nkf
私は殆ど使わないですねぇ、ログとかのフィルタに使うくらいで。
後方互換性も良いしって事でバッチ系は殆どPerlで書いちゃいます。
まぁ、shとかは組み合わせますけれど。
そう言えば昔Solarisでiconvを使ったCを書いたの思い出しました。(C#以外のCは普段まず使わないんですが、UNIX系だとどうしてもね・・・)
tan
on 2014 年 10 月 16 日 at 1:28 PM -
>ちょろさん
sh上で使うにはnkfは簡単に使えるので重宝しています。
perlで書くことも考えたのですが、最初は単純なフォーマット変換だと考えていたので、使い慣れたawkに走ってしまいました。
文字コード変換で悩むなら最初からperlでjcode.plを使ったほうが楽だったかもしれません。