簡体字モードのWindows拡張文字が強調表示No.22834
いいじま さん 07/04/05 10:56
 
いいじまです。

現在、日本語の文章を中国語に翻訳する仕事をしています。
その関係で、GB2312のファイルを秀丸で扱っているのですが、
強調表示指定にASCII文字だけを指定していても、本来のGB2312にない文字
(第二バイトが0xA1〜0xFEになっていない文字;主に日本式の漢字)が
その正規表現に引っかかってしまって、表示が化けてしてしまいます。

再現手順
1.適当な日本語のテキストファイルを開く。
2.[ファイル(F)]→[エンコードの種類(D)]で簡体字中国語を選び、
 「内容を維持したまま適用」を選ぶ。
 たいていの場合は何も言われずにフォントだけ変わるはず。
3.強調指定を全て削除する。言語別自動色づけも「なし」にする。
 この時点では、正常に表示される。
4.強調対象文字列として、正規表現で [ -~] を指定する。
 ASCII文字は指定した強調状態で表示される。
 GB2312に存在する文字はシステム文字色で正常に表示される。
 日本漢字が「半角空白+2バイト目の文字」に化けて表示される。
5.この状態でも、「文字コード表示」コマンドを実行してみると内部的には
 正しく格納されていることが確認できるし、カーソルも正しく動く。

これは仕様でしょうか、それとも不具合でしょうか。
現在、秀丸5.18を使用しております。

このへんの、2バイト目が0xA1〜0xFEになっていない文字の存在はWindowsの
拡張なのか、それとも何らかの規格があってそれに従っているのかちょっと
分からないのですが、できれば対応をお願いします。

#将来的にはGB18030にも…とか言ってみる。

[ ]
RE:22834 簡体字モードのWindows拡張文字No.22837
秀丸担当 さん 07/04/05 12:08
 

>現在、日本語の文章を中国語に翻訳する仕事をしています。
>その関係で、GB2312のファイルを秀丸で扱っているのですが、
>強調表示指定にASCII文字だけを指定していても、本来のGB2312にない文字
>(第二バイトが0xA1〜0xFEになっていない文字;主に日本式の漢字)が
>その正規表現に引っかかってしまって、表示が化けてしてしまいます。

手順通りにして確認することができました。
これは不具合でした。修正させていただきます。
HmJre.dllを使っている場合はコードページによるの判断ができるのでそれの対
応と、HmJre.dllを使っていなくても2バイト文字の途中であるかどうかの判断
をするように修正しようと思います。

GB2312の変換は、Windowsのコードページ変換を利用しているので、本来GB2312
にあるべきコードかどうかということは秀丸エディタは判断していないです。
ワードでGB2312で保存してみても同様のコードが生成されました。

[ ]