« レ○タルボックス | メイン | ナイス、33歳 »

2008年2月 7日

Vista文字コード(文字セット)の問題

カテゴリ:Windows Vista

 もはや、Vistaの罠なんて悠長なことを書いている状況ではなくなったのかもしれない。

 昨日ぶち当たったVistaの問題は強烈だった。とりあえず発生した現象を書くとする。

 うちの会社ではクライアントさんの作業用ファイルであるHTMLとか元データファイル(おもにCSVファイル)をファイルサーバで共有している。マシンをVistaにスイッチして初めてデータファイルをサーバにアップロードする作業を行った。が、何かおかしい。Webインタフェースの管理画面でCSVデータファイルをアップするのだが、それまで発生しなかった重複行のエラーなどが出る。私以外のスタッフがWindows XPやMacOS Xを使用したものを全く同じファイルにもかかわらず、重複行(キーとなるIDなどが重複しているという意味)のエラーが、、、。
 ためしに元々使っていたWindows XPでファイルをアップしようとすると何の問題も発生しない、一方Vistaのマシンからは相変わらずエラーが、、、。根本的な原因がつかめないので、そのファイルをテキストエディタやExcelなどで開いてみるとXPとVistaでファイルの中身が違っていることが判明。おいおい、そんなことってあるのか? 心霊現象かよ! みたいな感じでどつぼにはまっていたのですが、いろいろ調べていくとVistaで新たに採用された文字セット(文字コード)に起因する凄まじい罠の存在に気づいたわけです。

 どうやら、Vistaがリリースされる以前から騒がれていた問題だったようで、詳細は下記のサイトなどに書かれているのですが、とにかくVistaの普及率が微妙な現状を考えると頭が痛い問題のようです。

Vistaがもたらす文字コード問題:日経パソコンオンライン
特番 Windows Vistaの新文字セットが引き起こすトラブル:ITpro

ただ、今回発生した問題はこの文字セットの問題だけじゃなく、別の問題も内包している気がしてならない。上記のサイトなどで確認する限り、問題が発生するのは『Vista→XP等』の場合であり、『XP等→Vista』では問題が起きないと解釈していた(それがそもそも間違っているかもしれないけど)。また、発生するとしてもいわゆる文字が化ける程度(多くは字体が変わってしまう)だと思っていたのだが、今回私が遭遇したのはそんな甘っちょろいことではなかったのですよ。

 話を戻しますが、同一のファイルを同一のテキストエディタにてXPとVistaで表示して見比べてみたのですが、文字化けとかそんなレベルではなくて、行が途中で寸断されてしまい同じ行が不自然に重複するなど、もはやファイルがぶっ壊れたのと同等の状況が発生してしまったのです、、、。扱ったファイルが商品データとかでもう怖くてVistaではいじることができない状況に、、、。
 ちなみに、Vistaでのファイルのアップは1回目は問題なくいきますが、2回目からは例の重複行のエラーが出る、、、。こりゃ、Vistaがファイルにアクセスした際に、ファイルの内容について何らかの情報を持っていて(実装不明)、2回目からのアクセスでそいつが悪さをしちゃってる、とか。あくまでイメージですが、、、。

 対応策としてVistaの文字セットをXP側と合わせるというのがありますが(KB927490)、対応したところ私の問題に関しては全くNG。でもって、逆にXPの文字セットをVista側に合わせる(KB927489)なんてのもありますけど、私以外のマシンすべてに適用するってのは通常業務を破壊しかねないし、それ以前の問題でクライアントさんのマシンにそれを適用してもらうなんてことは実質不可能(元データはクライアントさんがExcelで生成→csv化→弊社へ)ですわ。っていうか、うちの会社にはMac OS Xも有ったりでそれはもうVistaに合わせることの影響が計り知れないわけですよ。

 現時点ではVistaでその手の作業をしないってのが原則になるでしょう。ちょっと、単なる文字化けとは訳が違うので慎重に事を進めていきたいと思います。

 正直、何バカなことしてくれてんだよMicrosoft! と、叫ばずにはいられないのですが(事件発生時、私が叫んだのは、「ゲイツの眼鏡を割ってやる!!」だとか、、、ゲイツ関係ないだろ)、これはこれで十分意味のある変更であることも事実でその過渡期に発生する困ったちゃんな事象と考えるべきなのでしょうなぁ、、、って、考えられるか! ボケ! ゲイツの眼鏡を割ってやれ!!!(だから、違うから、、、)

 ことがことなので、時間に余裕が取れれば続報満載で行きます。





投稿者 ymkx : 2008年2月 7日 04:45 |