unicode 文字を ? に置換No.09308
える さん 01/07/15 03:35
 
題名の「unicode 文字を ? に置換」ですが、これが発生した際の問題になった文字
を検索する方法はありませんでしょうか?

たとえば、ShiftJIS で書かれた
--
こんにちわ〜
--
という1行の文章をコピーして、保存すると、MS932 のコードセット
に含まれない「〜」が存在するので

Unicode テキストが含まれていたので、?マークや同義の文字などに変換して保存し
ました

という表示が出て、
--
こんちにわ?
--
という1行の文章に変換されてしまいます。

ShiftJIS の [〜] を見た目が同じ MS932 の[〜] へ置換したいだけ
なんですが、これ以外の文字も当然あると思います。

たとえば、上記の 「 ? に置換して保存しました」ダイアログのかわ
りに、

Unicodeテキストが含まれているので xxx 形式では保存できません。
同義の文字や ? に置換します
[ 置換 ] [置換+次] [一気] [上候補] [下候補] [置換文字指定]

のような置換確認ダイアログの変形したようなのになるとうれしいです

[ ]
RE:09308 unicode 固有の文字を ? に置換No.09309
番頭++ さん 01/07/15 10:27
 
解答ではない。かも ...

searchdown "\x81", regular;

正規表現をすると「秀丸」は文字を認識してるので、
16 進数の検索、置換はうまく行かないことがある。見たいです。
0xFF とか (文字に無いコード) は処理できるのですが。

searchdown "\x81";
replacedown "\x81", "\x82", ask;
だと、うまくいく場合がありますが。

こんにちは〜
こんにちわA

//*5    A1.mac - 未確認マクロ
if( ! ( charset & 0x02 ) ){ endmacro;   }   //  ! Unicode
call pp_proc1;
gofiletop;
//* saveas filename2, unicode;
endmacro;

pp_proc1:
//* call pp_p1 "\x81", "\x82";
    call pp_p2 "\x81", "?";
return;

pp_p1:
    gofiletop;
    replacedown $$1, $$2, ask;
return;

pp_p2:
    gofiletop;
    searchdown $$1;
    while( result ){
        escape;
// menu "Yes", "No";
// if( result ){
  // ここを改造する ...
        beginsel;   right;
  // gettext が必要かも ...
        delete; insertfix $$2;
// }
        finddown;
    }
return;

[ ]
RE:09308 unicode 文字を ? に置換No.09329
秀丸担当 さん 01/07/16 18:46
 
なにやら用語の使い方がよくわかりませんが、
えるさんがShiftJISの「〜」と言っているのは
Unicodeの0x301cの「〜」のことでしょうか。

まあそれは置いておくとして、
Unicodeのテキストでどこに何があるかわからない文章を
扱うときは辛いと思うので検討しておきます。

>Unicodeテキストが含まれているので xxx 形式では保存できません。
>同義の文字や ? に置換します
>[ 置換 ] [置換+次] [一気] [上候補] [下候補] [置換文字指定]
>
>のような置換確認ダイアログの変形したようなのになるとうれしいです

この方法もいいですが、大変かもしれなので、
いずれマクロや強調表示でUnicodeが扱えるようになればいいかと
思います。

[ ]
RE:09329 unicode 文字を ? に置換No.09339
える さん 01/07/16 21:37
 
>なにやら用語の使い方がよくわかりませんが、
>えるさんがShiftJISの「〜」と言っているのは
>Unicodeの0x301cの「〜」のことでしょうか。

ええ、そこらへんですね。
単純に「いわゆる ShiftJIS」には、

1) PC/AT 互換機を制定した時に IBM が国際化文字コードとして定義下 CodePage 93
2 (cp932)
2) 1) を Microsoft が独自に拡張して MS-DOS に乗せた CodePage 932 (ms932)
3) 1) を IBM が独自に拡張して PC-DOS に乗せた CodePage 932 (IBM932, 後の cp9
34他)
4) 2) を NEC-PC98 などにのせる時に NEC が独自に拡張した CodePage 932 (NEC932)

などなど多種類が存在するので ShiftJIS という記述はやめるべきでしたね。

>まあそれは置いておくとして、
>Unicodeのテキストでどこに何があるかわからない文章を
>扱うときは辛いと思うので検討しておきます。

よろしくお願いします。

>いずれマクロや強調表示でUnicodeが扱えるようになればいいかと
>思います。

string 内の文字列が charset にマッピングを持っていれば true を返すような
hasMapping(string, charset) みたいな関数ができるんでしょうか。

[ ]