英語版秀丸のエラーダイアログNo.19896
マボカル さん 05/08/29 23:40
 
マボカルと申します。

韓国語版XP+英語版秀丸502の環境でユニコードで保存されたハングル
ファイルを検索中、次のようなエラーダイアログが出ました。

http://home.freechal.com/majima/03/1/28691770

厄介なことにはそれ以降、検索系のショートカットキーを押すたびに
上のダイアログが出ます。エスケープで逃げると検索の窓が出ますが
どうして検索のたびにそのようなエラーダイアログが出続けるのか
分かりません。

ctrl+F
ctrl+R
alt+S+G などなど・・・

エラーダイアログはユニコードでは検索語に [ ] を使ってはいけない
みたいなことが書かれていますが、よく意味が分かりません。

ちなみに検索語は

[XX] XX.*\?

でした。(X部分はハングル一文字分)

このような現象は一度 [ ] を使わない検索語でヒットした後や、 [ ]
の中にアスキー文字など文字コード上明らかに問題のなさそうな検索語
を入れてヒットさせた後は、正常な動きに戻ります。というかその場合
はヒットしなくてもその後の検索からはいちいちエラーダイアログは
出なくなります。

どうも [ ] が問題のようですが、ためしに [ ] の代わりに (  ) を
使ってみると、

(X|X) XX.*\?

問題なく検索され、変なエラーのダイアログも出ません。

韓国語版XP+英語版秀丸502+ユニコード+ハングル文字という環境で
すのでいろいろな面がネックになっていると考えられるため、根本的
な問題を探すのには難しいかと思いますが、報告しておきます。

ちなみに私の経験上、OSの文字コードとファイルの文字コードとの
関係が大きそうですが、こういった検索上の問題の場合、文字コードを
OSの文字コードに合わせると一番相性のいいような感じがします。

韓国語版XPにてユニコードでなくてハングルのコードに保存しなおして
同じような検索をするとエラーダイアログは出なく、正常に検索される
からです。

とりあえず今回初めて見たエラーダイアログの意味と、どういう環境で
それが出るのかと言う点。それからそのダイアログが一度出てしまうと
次に実際に検索を始める前から同じようなダイアログがまず出てしまう
という現象を説明していただけるとありがたいです。よろしくお願い
します。


[ ]
RE:19896 英語版秀丸のエラーダイアログNo.19899
秀丸担当 さん 05/08/30 09:45
 

>韓国語版XP+英語版秀丸502の環境でユニコードで保存されたハングル
>ファイルを検索中、次のようなエラーダイアログが出ました。
>
>http://home.freechal.com/majima/03/1/28691770

このURLの先のものがダイアログ中のメッセージなのか、ハングルで画像が無い
という意味なのかちょっとわかりませんでした。

おそらく、日本語版における「キャラクタクラス[]の中にUnicode独自の文字を
入れることはできません」というエラーメッセージが出ているのでしょうか。

これはその通りの意味で、

[XX] XX.*\?

という感じで最初のXXの部分にUnicode独自の文字を入れることはできません。
基本的にHmJre.dllとJre32.dllはUnicode独自の文字には対応しておらず、秀丸
エディタ側で強制的に文字コードを変換して、通している過程で、[]の中の
Unicode独自の文字は扱えなくなっています。
いずれHmJre.dll側のUnicode対応ができればいいと考えています。

何度もエラーが出てしまうのは、検索文字列をチェックする処理のところで毎回
出てしまっていたためでした。何度も出てしまわないように修正したいと思いま
す。

[ ]
RE:19899 英語版秀丸のエラーダイアログNo.19903
マボカル さん 05/08/31 00:54
 
秀丸担当さん

ご回答ありがとうございます。

>このURLの先のものがダイアログ中のメッセージなのか、ハングルで画像が無い
>という意味なのかちょっとわかりませんでした。

すみません。リンクが切れていたのでしょうか。ダイアログに表れた
メッセージは以下の通りで、日本語版の「キャラクタクラス[]の中に
Unicode独自の文字を入れることはできません」と同一のものだと思い
ます。

A original Unicode character cannnot be put into [].

>[XX] XX.*\? という感じで最初のXXの部分にUnicode独自の文字を
>入れることはできません。基本的にHmJre.dllとJre32.dllはUnicode
>独自の文字には対応しておらず、秀丸エディタ側で強制的に文字
>コードを変換して、通している過程で、[]の中のUnicode独自の文字
>は扱えなくなっています。

そうでしたか。[ ] の中にはUnicode独自の文字は使えない訳ですね。
( ) は使えて [ ] は使えないのは仕様と理解してもよろしいので
しょうか。( ) は文字列のグルーピング、[ ] は文字一つ一つに対する
ものなので、そもそも概念自体が違うので ( ) では問題なく動くと
いうことなのでしょうか。

韓国語XPで文字コードを Hangul にした場合は [ ] でも問題なく動く
というのは [ ] 内に入る文字がハングル文字であっても、OS自体が
Hangulコードを基本としているので、そういう条件下では [ ] 内の
ハングル文字がUnicode独自の文字ではなく、Hangulコードに含まれる
文字として認識しているのでしょうね。

文字コード関係の問題は難しいですね。

>何度もエラーが出てしまうのは、検索文字列をチェックする処理のところで毎回
>出てしまっていたためでした。何度も出てしまわないように修正したいと思いま
>す。

そこの修正よろしくお願いします。というよりこれから「キャラクタ
クラス[]の中にUnicode独自の文字を入れることはできません」という
ことを考えて、適切な検索語を入れるように気をつけます。

どういう原因で今回の現象が発生したのか納得いきました。どうも
ありがとうございました。




[ ]