検索できないNo.03790
colder さん 09/09/10 11:43
 
文字コードがEUCである文書を検索するときに、
検索ワードにIBM拡張漢字、補助漢字 双方に含まれている文字があるときに検索に失
敗します。
そちらの環境で再現しますでしょうか。

環境:XP+秀丸v8.00β13

[ ]
RE:03790 検索できないNo.03792
秀丸担当 さん 09/09/10 13:32
 

>文字コードがEUCである文書を検索するときに、
>検索ワードにIBM拡張漢字、補助漢字 双方に含まれている文字があるときに検索に失
>敗します。

IBM拡張文字でNEC選定のものとかぶっている文字のことだとしたら、あいまい検
索で同一視するようにするといいかもしれないです。
このページ http://hide.maruo.co.jp/software/hidemaru.html のHMJRE.DLL用
のカスタム同一視指定ファイル hmjre_customset005.lzh でダウンロードできま
す。
検索ダイアログに一度入ると、いったんUnicodeの変換がかかって、かぶっている
文字がUnicodeとShift-JISで一対一になっていないのでどちらかで問題が起きて
しまうようです。
補助漢字のことはわからないです。
具体的な文字コードを押していただけると分かるかもしれません。

[ ]
RE:03792 検索できないNo.03797
colder さん 09/09/10 18:26
 
>IBM拡張文字でNEC選定のものとかぶっている文字のことだとしたら、あいまい検
>索で同一視するようにするといいかもしれないです。
ダメでした。

>補助漢字のことはわからないです。
>具体的な文字コードを押していただけると分かるかもしれません。

g(\u5f45)やケ(\u9127)のことです。
再現するためのマクロを以下に書いておきます。

newfile;
setencode 26;
insert "C1,F0,8F,BC,F4,B9,E4,0D,0A,";
saveas "hoge.txt";
setencode 3,0;
searchdown "\u5f45";
if(result)
  message "\u5f45が見つかった";
else
  message "\u5f45が見つからない";

[ ]
RE:03797 検索できないNo.03808
秀丸担当 さん 09/09/11 10:49
 

>g(\u5f45)やケ(\u9127)のことです。
>再現するためのマクロを以下に書いておきます。

マクロで再現させることができました。
ありがとうございます。
「ナギ」を例とすると、Shift-JISの場合は FA67 と ED4B の2種類あって、これ
はあいまい検索で回避できました。
EUCの場合は F9AC と 8FBCF4 の2種類あって、これはあいまい検索では回避でき
ませんでした。
8FBCF4のほうは、秀丸エディタ内部ではUnicode独自文字として保持していて、
FA67 と ED4B の同一視では解決できませんでした。

8FBCF4 を読み込むときにUnicode独自文字として保持せず F9AC と同じ扱いにす
れば可能だと思いますが、そうすると開いて上書き保存するだけで別の文字コー
ドになってしまうので、できれば避けたいところです。

あいまい検索でUnicodeの同一視指定はいまのところできないので、同一視指定フ
ァイルを作ることは現時点ではできないです。

秀丸エディタの検索方式を文字セット依存をやめて全部いったんUnicodeに変換し
てから検索する方式にすると回避できると思いますが、リスクがあるかもしれな
いのと、パフォーマンスも低下するかもしれないので慎重に考えたいところです。
あと正規表現ではやっぱり従来通りだとすると、正規表現ON/OFFで挙動が変わる
のは中途半端になるかもしれません。

なにかいい方法があるといいのですが、よく考える必要がありそうです。

現状で無理矢理回避するには、1つは、全部コピーしてから貼り付けすると、い
ったんUnicodeになってから変換されるのでかぶっている文字コードが統一されて
検索可能になると思います。

または正規表現で[g\u5f45]とすれば回避することもできました。

[ ]
RE:03808 検索できないNo.03809
秀丸担当 さん 09/09/11 11:11
 

>「ナギ」を例とすると、Shift-JISの場合は FA67 と ED4B の2種類あって、これ
>はあいまい検索で回避できました。

このスレッドの話題とは少し外れますが、前に要望いただいたSHIFT_JIS-2004
(Shift-JISの JIS X 0213版)に対応するとすれば、これらの文字コードに互換
性が無いということが調べてわかりました。
互換性が無いのは外字だけかと思っていたのですが、同じコードで文字が違うと
いうことのようです。
ということはSHIFT_JIS-2004は今までのShift-JISの延長として扱うことはできず、
全く別の新規のエンコードとして扱わなくてはいけないようです。

WindowsのShift-JIS文字セットの「ナギ」は ED4B と FA67 で、
SHIFT_JIS-2004の「ナギ」は EAB8で、今までの ED4B と FA67 は全く別の漢字、
というような感じになっているようです。

[ ]
RE:03809 検索できないNo.03818
colder さん 09/09/11 16:50
 
>8FBCF4 を読み込むときにUnicode独自文字として保持せず F9AC と同じ扱いにす
>れば可能だと思いますが、そうすると開いて上書き保存するだけで別の文字コー
>ドになってしまうので、できれば避けたいところです。

>現状で無理矢理回避するには、1つは、全部コピーしてから貼り付けすると、い
>ったんUnicodeになってから変換されるのでかぶっている文字コードが統一されて
>検索可能になると思います。
これをするとIBM拡張漢字側のコードに統一されるので秀丸では、検索可能になりま
すが、
本来のEUCではIBM拡張漢字を表現することは出来ず、対応していないツールも少なく
なく、
問題が多いです。補助漢字側に統一するようなオプションが秀丸にあればいいのです
が。

>このスレッドの話題とは少し外れますが、前に要望いただいたSHIFT_JIS-2004
>(Shift-JISの JIS X 0213版)に対応するとすれば、これらの文字コードに互換
>性が無いということが調べてわかりました。
>互換性が無いのは外字だけかと思っていたのですが、同じコードで文字が違うと
>いうことのようです。
>ということはSHIFT_JIS-2004は今までのShift-JISの延長として扱うことはできず、
>全く別の新規のエンコードとして扱わなくてはいけないようです。

>WindowsのShift-JIS文字セットの「ナギ」は ED4B と FA67 で、
>SHIFT_JIS-2004の「ナギ」は EAB8で、今までの ED4B と FA67 は全く別の漢字、
>というような感じになっているようです。
IBM拡張漢字は、Microsoftの独自拡張ですし、規格的には外字扱いというところでし
ょうね。
その他にも非漢字の文字の幾つかがUnicodeに変換したとき、異なるコードになります。

[ ]
RE:03818 検索できないNo.03819
秀丸担当 さん 09/09/11 17:30
 

>これをするとIBM拡張漢字側のコードに統一されるので秀丸では、検索可能になりま
>すが、
>本来のEUCではIBM拡張漢字を表現することは出来ず、対応していないツールも少なく
>なく、
>問題が多いです。補助漢字側に統一するようなオプションが秀丸にあればいいのです
>が。

そうでしたか。
読込み時にShift-JISのIBM拡張漢字相当に統一して読み込んでしまい、検索を可
能にし、保存時はIBM拡張漢字は全部補助漢字として保存する、という方法だった
らむしろ都合がいいかもしれないです。

とはいえ突然挙動が変わるのはまずいかもしれないので、やるとしたらオプショ
ンのほうがいいかもしれないです。
慎重に考えたいと思います。

[ ]
RE:03819 検索できないNo.03822
Iranoan さん 09/09/11 19:41
 
 秀丸担当さん今日は、Iranoan です。
> 読込み時にShift-JISのIBM拡張漢字相当に統一して読み込んでしまい、検索を可
> 能にし、保存時はIBM拡張漢字は全部補助漢字として保存する、という方法だった
> らむしろ都合がいいかもしれないです。
 投稿を読むと、colder さんの意見が妥当だと思うのですが、過去には逆に
「IBM 拡張に統一して欲しい」という話もあったぐらいなので、悩ましいとこ
ろですね。
http://maruo.dyndns.org:81/hidesoft/hidesoft_2/x14444.html#14448

[ ]
RE:03822 検索できないNo.03832
秀丸担当 さん 09/09/14 09:23
 

> 投稿を読むと、colder さんの意見が妥当だと思うのですが、過去には逆に
>「IBM 拡張に統一して欲しい」という話もあったぐらいなので、悩ましいとこ
>ろですね。

情報ありがとうございます。
過去ログによりますと、統一したいとい話しはShift-JISのIBM拡張文字のIBM選定
とNEC選定でかぶっている文字のことで、EUCの補助漢字(3バイトのコード)のこと
とは違うかもしれないです。
様々なケースがと思うので、突然仕様変更というのはやめたほうがいいかもしれ
ないです。

[ ]
RE:03832 検索できないNo.03838
秀丸担当 さん 09/09/14 16:29
 

機種依存文字の件について、とりあえず検索ダイアログで機種依存文字を入力し
た場合はダイアログ中に赤色の警告文字を表示するようにしてみます。
いままでの動作に影響を与えることなく、検索できないかもしれないことを知る
ことはできるようになると思います。

[ ]