「Repl-Ace on .NET」では、Windows でサポートしているコードページに従って、文字セットの処理を行います。
ただし、使用の際は以下の制限事項等にご留意ください。
内部処理は Unicode(UTF-16LE) で行われる
ファイルがいかなる文字セットであろうとも、一旦 UTF-16LE に変換し、変換処理や置換処理を行います。
基本的には問題ないですが、 UTF-16LE にマッピングできない文字が含まれた場合は、正常に処理できない場合があります。
サロゲートペアに関しては、表示や置換は問題なく処理できますが、基本的に2文字として認識されてしまいます。この点については、今後の .NET Framework のバージョンアップによって解消される可能性もあります。
文字セット変換は Unicode(UTF-16LE) を経由する
文字セットの変換は、一旦変換前の文字セットから Unicode(UTF-16LE) にマッピングし、それを変換後の文字セットにマッピングすることで行われます。
Shift-JIS と JIS、 JIS と EUC-JP、UTF-16LE と UTF16BE 等、直接変換する手段があるものに関してもそれは同様です。
従って、 UTF-16LE にマッピングできない文字が含まれた場合は、正常に変換できない可能性があります。
なお、強制的に変換しない場合は、 UTF-16LE にマッピングする時点でマップの妥当性をチェックする為、変換自体が行われないようになっています。
バイナリ置換は OEM アメリカ合衆国 で代替的に行われる
内部処理は前述のとおり、すべて UTF-16LE にマッピングした上で行われる為、「Repl-Ace on .NET」は基本的にバイナリ置換に対応していません。
ただし、文字セットに OEM アメリカ合衆国 を使用することで、代替的にバイナリ置換を実現できます。
その際、バイナリコード指定(基本的に16進数での指定)に ASCIIコードを用いてもマッチしない場合がある為、そのASCIIコードを UTF-16LE 上にマッピングした際のバイナリコード指定を使用する必要があります。
その作業を簡略化するため、ズームにASCIIのコードをUnicodeのコードに変換する機能を用意しています。
文字セットの判定には Mlang.dll が使用される
文字セットの判定には、Internet Explorer の Mlang.dll が使用されます。
Mlang.dll が何らかの理由で見つからない場合は、文字セット判定が利用できません。
Mlang.dll による判定は、Unicode系では(特にBOM付ならば)かなりの精度で判定できますが、その他の文字セットに関しては、ファイルのサイズが小さかったり、判定に要する特定の文字が見つからなかったりした場合、判定を誤る可能性があります。
特に、Shift-JIS を誤って 西ヨーロッパ言語(windows) と判定する可能性は非常に高く、注意する必要があります。
2008/11/19 wrote; by SirMiles
All rights reserved,Copyright ©SirMiles 2008-.