EUC-CNの範囲外の文字の強調表示は?No.26123
いいじま さん 09/02/06 10:10
 
いいじまです。今回は相談。

仕事で中国語HTMLの作成を任されており、ファイルをEUC-CNで保存しています。
作業途中には日本語の文章を中国語HTMLの中に貼り付けて、
それをネイティブの人に渡して訳してもらっています。

で、そのとき困るのが、Windowsの簡体字中国語コード(CP936)では
日本語の漢字も問題なく入ってしまう、という点です。
Windowsではそのまま読めますが、GB2312の範囲外のコードになるので、
LinuxなどではGB18030対応フォントがないと読めません。

というわけで、日本語の除去し忘れや、日中で字体が微妙に違う文字などを
強調表示したいのですが、何かいい方法はないでしょうか。
強調したい対象は、0x8040〜0xFEFE の範囲の文字のうち、第一バイトと
第二バイトが両方とも 0xA1〜0xFE になる文字を除外したものです。
単純に [\x80\x40-\xFE\x9F] のようにすると、除外したい文字も丸ごと
ヒットしてしまいます。

逆に EUC-CN の範囲内の文字のほうを [\xA1\xA1-\xFE\xFE] で強調すると、
今度は除外したい文字がヒットしてしまいます。

何かいい方法はないでしょうか。

[ ]
RE:26123 EUC-CNの範囲外の文字の強調表示No.26127
秀丸担当 さん 09/02/06 10:52
 

>強調したい対象は、0x8040〜0xFEFE の範囲の文字のうち、第一バイトと
>第二バイトが両方とも 0xA1〜0xFE になる文字を除外したものです。

この条件を1つの正規表現で書くのは難しいのではないかと思います。
正規表現では、下位バイトの範囲だけにして、上位バイトぶんは大量に書くとい
う方法だったらなんとかなるかもしれないですが、どうでしょうか。
でもこの方法だと表示が遅くなってしまうかもしれないですが。

[\xa1\xa1-\xa1\xfe]
[\xa2\xa1-\xa2\xfe]
[\xa3\xa1-\xa3\xfe]
  :
  :
[\xfc\xa1-\xfc\xfe]
[\xfd\xa1-\xfd\xfe]
[\xfe\xa1-\xfe\xfe]


hilightファイルを作って読み込むようにすると楽かもしれません。
以下のhilightファイルを作って、強調表示の読込みをするとか。

25,[\xa1\xa1-\xa1\xfe]
25,[\xa2\xa1-\xa2\xfe]
25,[\xa3\xa1-\xa3\xfe]
  :

[ ]
RE:26127 EUC-CNの範囲外の文字の強調表示No.26130
いいじま さん 09/02/06 13:10
 
いいじまです。

>>強調したい対象は、0x8040〜0xFEFE の範囲の文字のうち、第一バイトと
>>第二バイトが両方とも 0xA1〜0xFE になる文字を除外したものです。
>
> この条件を1つの正規表現で書くのは難しいのではないかと思います。
> 正規表現では、下位バイトの範囲だけにして、上位バイトぶんは大量に書くとい
> う方法だったらなんとかなるかもしれないですが、どうでしょうか。
> でもこの方法だと表示が遅くなってしまうかもしれないですが。
>
> [\xa1\xa1-\xa1\xfe]
> [\xa2\xa1-\xa2\xfe]
> [\xa3\xa1-\xa3\xfe]
>   :

やはりそうですか…とりあえず諦めることにします。
EUC-CNの範囲外の文字を出荷前に検出できればいいので、
マクロかスクリプト言語でやってみようと思います。

[ ]