英語版のアプリケーションでエラーが出る原因

英語版のアプリケーション使っていると、時に思ってもみないエラーに見舞われることがあります。

先日も、再現率100%のエラーを開発元にレポートすると、どういうわけか「こっちじゃ再現しないよーっ」って返事が返ってくるので、英語版の環境で試してみると確かに再現しない。

はて???

原因不明ですが、すくなくとも言語関係に依存したエラーである可能性が高いので、いろいろと試してみることになります。

最初に試してみるのは日付と時刻の形式。
日付や時刻を扱う場合、自国の形式しか想定していないと日本だと結果的にエラーになることがあります。日本では日付の形式は"yyyy/MM/dd"ですが、国によっては"dd/MM/YYYY"と真逆だったりします。APIは国ごとの形式に合わせて値を返すので、これを意識していないと例えば"2011/3/2"を西暦2年3月2011日のようにとんでもない日付として処理してしまうことになります。ばかばかしい例ですが、本当にこういうのが原因でエラーになるケースがあります。

でも再現しない。

で、次はシステムロケール
Unicode対応のアプリケーションは別として、それ以外のアプリケーションでは自国の文字コードなどに依存しているケースがあります。何の処理で引っかかるのか文字コードの違いでエラーを起こすことがあります。特に長期間開発が続いているアプリケーション(=古いコードを含んでいるアプリケーション)だと、結構確率高いです。
文字化け程度なら我慢すれば済みそうですが、エラーになるのは困ります。システムロケールを英語に変更してエラーにならないようなら、そのあたりが原因です。これは逆もしかりで、英語版でもシステムロケールを日本語にして試すとエラーを再現することができます。

と、こんな感じで試して絞り込めたら、ふたたび海の向こうへメールを出すのです。

でもねー、日付とかわかりやすい手がかりがあればいいんだけど、まったくそんなの関係ない機能でエラーがでると、ほんと困りもの。原因の切り分け大変なんだもん。

コメント

このブログの人気の投稿

TabError: inconsistent use of tabs and spaces in indentation

ディスプレイ ドライバーの応答停止と回復

マクロを含んだ.XLSがExcel2010で開けない