クロスプラットフォーム問題

2010年代になった今でも相変わらず使用しているプラットフォーム(主にOS)の違いによって受渡したデータが閲覧できない等の問題は多く発生しているようです。

一番顕著なのはAJACS名古屋のテキストで詳しく書いたUNIX, MacOS, Windowsのテキストファイルでの改行コードの違いの問題でしょう。これらは歴史的な経緯があってこうなってしまっていて、普段はアプリケーションレベルで回避しているので問題にならないものの、自らが生データを扱うようになるととたんに問題の原因となっているようです。

OSの選択肢の傾向(データを渡す側はWindowsで受け取る側はUNIX)から一番良く起こると考えられる、WindowsのテキストファイルをUNIXのそれに変換する場合、以下のperlのワンライナーで変換できます。

perl -pe 's/r//g' win.txt > unix.txt

変換したいファイル名を変えずに上述の改行コード変換だけをしたいのなら以下のワンライナーがおすすめです。

perl -i~ -pe 's/r//g' data.txt

data.txtの改行コードが変更され、元ファイルはdata.txt~というファイル名に変更されます。

また、改行コード問題以前に、半角の(円記号)と\(バックスラッシュ)が違いない(同じ意味である)ということについて、ここできっちり記しておきます。フォントによって表示される文字が違うこの「文字」、混乱の元ですよね。この違い(実際には違いはないんですけど…)に悩む人が少なからずいるのではないでしょうか?

さらに、UNIXプラットフォームで生成したデータを受渡した先で開けないということは日常茶飯事ではないでしょうか?テキストファイルであれば(UNIXでは任意の)ファイル拡張子を.txtにしてから渡してあげるとか、ファイル圧縮形式もgzipやbzip2ではなくてzip圧縮したものを送る配慮が(相手のリテラシレベルによっては)必要だったり。気をつけたいものです。


Written by bonohu in misc on 日 16 6月 2013.