Unicode特有の文字の検索No.18829
cho-bi さん 05/02/15 16:57
 
 Unicodeの文章をシフトJISで保存すると、Unicode特有の文字
は「?」になりますが、これをあらかじめ検索する方法はありま
すでしょうか。
 いまはオリジナルのUnicode文章と変換後の文章を並べて、変
換後の文章で「?」を検索していますが、あらかじめ検索したり
置換ができれば便利かなと思いました。どなたかお教えいただけ
れば幸いです。

[ ]
RE:18829 Unicode特有の文字の検索No.18830
ENCODINGSHIFTJIS さん 05/02/15 19:43
 
元の文書を全コピーして、新編集面(Shift_JIS)にペーストします
新規面を名前を付けて保存する、の保存ボタンで
ダイアログが出て?の位置に飛べます。
少量定形なら検査は容易です。

[ ]
RE:18830 Unicode特有の文字の検索No.18832
cho-bi さん 05/02/15 23:32
 
 ENCODINGSHIFTJIS さん、早速お教えを頂き、ありがとうございました
。なるほどこれで検索できますね。

 ただ、文字を見つけてそれに修正を加えたら、毎回「名前を付けて保存
」をしないといけないので、数が多いと少し不便です。また人から送られ
たUnicodeファイルを、修正せずチェックするだけ、という機会も多いの
ですが、この場合は教えて頂いた方法だと毎回先頭のUnicode文字だけに
ヒットしますので、うまく調べられません。

 通常の検索のようにF3キーで次々と検索したり、grepとかができるとと
ても便利なのですが、そういうことは不可能でしょうか。

 最初に忘れていましたが、秀丸は4.14です。

[ ]
RE:18832 Unicode特有の文字の検索No.18834
Arimac さん 05/02/16 00:43
 
シフトJISにない文字の場合、codeの値が0だったような・・・
マクロを使えば出来るかも・・・

[ ]
RE:18834 Unicode特有の文字の検索No.18836
でるもんた さん 05/02/16 07:30
 
Arimacさん:
> シフトJISにない文字の場合、codeの値が0だったような・・・
> マクロを使えば出来るかも・・・

以前にも、そんな話がありましたね。
…って、Arimacさん自身がマクロを書いてるじゃないですか!

このときは、シフトJISにない文字は 〹 の形式に変換したい、という
ことでしたが、単に検出するだけの場合は

>             delete;
>             insert "&#" + str(#u) + ";";
>             #n = #n + 1;

の部分に手を入れればいいかと。


-------- Original Message --------
Subject: turukame.3:03976| RE 03958 要望: 変換できない文字
Date: Mon, 02 Feb 2004 10:10:16 +0900
From: Arimac<6xxxxxxxxxxxxxx@maruo.co.jp>

マクロでできました。
エンコードの切り替えで「内容を維持したまま適用」して以下のマクロを実行。

#n = 0;
gofiletop;
#r = 1;
while (#r) {
    #c = code;
    if (#c == eof) break;
    if (#c == 0) {
        #u = unicode;
        if (#u == 0) {
            right;
            #r = result;
        } else {
            delete;
            insert "&#" + str(#u) + ";";
            #n = #n + 1;
        }
    } else {
        right;
        #r = result;
    }
}
message str(#n) + "個置換しました。";

[ ]
RE:18836 Unicode特有の文字の検索No.18837
cho-bi さん 05/02/16 13:39
 
 Arimac さん、でるもんた さん、どうもありがとうございます。

 でるもんた さんが紹介して下さったArimac さん作成のマクロ、
早速使わせて頂きました。シフトJISにない文字が、&#12345; 形式に変り
、とても便利です。
 また、単に検索するだけの場合もありますので、でるもんた さんのお
教え通り、

>             delete;
>             insert "&#" + str(#u) + ";";
>             #n = #n + 1;

の部分を、

>            beginsel;
>            right;
>              question "検索を続けますか";
>                 if(result ==no ){
>                        goto END;}
>            escape;
>            #n = #n + 1;

と変えたところ、うまく検索することができました。本当にありがとうご
ざいました。

 マクロヘルプと首っ引きで、半日かけてようやくできたのですが、もっ
とこうした方がいい、とかありましたらお教え頂ければありがたいです。

[ ]