i18n検証(3)

一つ前

http://d.hatena.ne.jp/tsugehara/20060724/1153748903
なんか最近調査ばかりしているな・・。

EmEditorの国際化対応調査

SJISファイルが西ヨーロッパ言語と認識される問題

一つ前に日記に記載したが、SJISのファイルが西ヨーロッパ言語となって文字化けしてしまう問題について。
単にエンコード自動判別が動いていないだけなので、以下二つのアプローチをとることで容易に解決出来た。

  1. ファイルを開く時にエンコード自動判別を明示的に指定する
  2. ファイルの設定で西ヨーロッパ言語ではなく日本語(自動判別)を指定する
ファイルを開く時にエンコード自動判別を明示的に指定する

ドラッグ&ドロップでファイルを開くのではなく、ファイルを開くメニューからちゃんと開こうという事である。
画面左下に「すべて自動検出」というものがある。適当なエンコードを指定してからここにチェックを入れると、ファイルを開く時に検出したエンコードのリストが表示される。大体SJISも正しく検出できるので、SJISを指定してやればいいし、検出できなくとも開く時に自分で指定出来るので、文字化けして驚くこともなくなる。
やや手間だが、これが一番確実だろう。
私はものぐさなので、この「やや手間」が気になるし推奨はしない。

ファイルの設定で西ヨーロッパ言語ではなく日本語(自動判別)を指定する

このやり方は若干英語OSで表示が違うので手法を明示する。
「ツール」メニュー、「設定の選択」、「設定の定義」で、まずは設定の定義ダイアログを開く。
ここですべて選択して、全ての拡張子で日本語をデフォルトのエンコードにしてもいいのだが、とりあえずはTextのみ指定することをお薦めする。環境次第では、英語のソースコードばかり扱うかもしれないし、ベトナム語ソースコードばかり扱うかもしれない。
とりあえず、「Text」という項目を選択し、「プロパティ」ボタンをクリックしよう。


ファイルタブを開くとこんな画面になると思われる。
ファイルタブのデフォルト
これを「Japanese(Auto-Select)」に変更しよう。
ファイルタブ切り替え後
このように指定してもUnicode系の自動判別は動作するので、UTF8のファイルが正常に読めなくなるのではなどの心配はいらない。
この状態で.txtのファイルを読めば、無事SJISも表示されるようになる。
以上で英語環境下におけるEmEditorの日本語完全対応は完了する。
さすがのクォリティといったところだろうか。


他のファイルでも対応する場合は、Text以外の設定もすればいい。個人的にはHTMLとXMLだけ指定して、あとは手動指定で十分だと思う。

EmEditorEUC-JP自動判別調査

ついでにEmEdkitorでEUC-JPがうまく判別されない点についての調査。
EmEditor文字コード自動判別ルーチンの仕様だと思われる。実は小さいファイルで確実に判別するのは、ヘッダのないプレーンテキストファイルではどのようなロジックを組んでも不可能なのだが、日本語の自動判別で「あ」が格納されているのにEUCになるのは、その仕様に落としたという事なのだろう。
詳しくはEUC-JPと「京」の字辺りの記事を探してみてほしい。
今回の調査で使用するファイルは以下2点。

  1. MS932の日本語・英語混在ファイル
  2. EUC-JPの日本語・英語混在ファイル
MS932の日本語・英語混在ファイル

MS932表示

a i u e o
あいうえお
kakikukeko
かきくけこ

EUC-JP表示
MS932をEUC-JP表示
ダンプ

61 20 69 20 75 20 65 20 6F 0D 0A 82 A0 82 A2 82 A4 82 A6 82 A8 0D 0A 6B 61 6B 69 6B 75 6B 65 6B 6F 0D 0A 82 A9 82 AB 82 AD 82 AF 82 B1 0D 0A
EUC-JPの日本語・英語混在ファイル

MS932表示
EUC-JPをMS932表示
EUC-JP表示

a i u e o
あいうえお
kakikukeko
かきくけこ

ダンプ

61 20 69 20 75 20 65 20 6F 0A A4 A2 A4 A4 A4 A6 A4 A8 A4 AA 0A 6B 61 6B 69 6B 75 6B 65 6B 6F 0A A4 AB A4 AD A4 AF A4 B1 A4 B3 0A
結論

今回はキャプチャは省略。
テストに使用したEmEditorは下記2点。

  1. EmEditor5.0フリー版(日本語リソース)、Windows XP Professional SP2(日本語リソース)
  2. EmEditor6.0フリー版(日本語リソース)、Windows XP Professional with SP2(英語リソース、VirtualPC上)

いずれもEUC-JPの自動判別に失敗(SJISになった)。
エンコードは全て自動選択、日本語の自動選択いずれも試したが結果は同じだった。
もっとも、別のもう少し長いファイルを開くと(試したのはTeraPadのReadme.txt)EUC-JPも正しく認識されたし、失敗したファイルも最強のお呪いである「京」の字を一つ含めてやれば正常に認識した。
おそらく、「SJISに定義されていないがEUC-JPに定義されている文字が含まれていればEUC-JP」、そうでなければSJISとしているのではないだろうか。もしそうなら、それは仕様としては十分アリである。
Em氏が指摘されたようにステータスバーから簡単に文字コードを切り替えられる優れた操作性も考慮すれば、十分実用範囲内といえるだろう。