UTF-8のロシア語で使用される特殊文字につNo.06120
ivan さん 05/01/02 21:52
 
謹賀新年 m(__)m

ダンプしたところ、
E2,80,94
となる文字です。(ちなみに、「あ」は、E3,81,82です)
この文字を変数に代入してマクロの insert を用いると
内部処理で無効化されているようで、「?」となります。
今のままでも別の方法で対処できますが、対応可能であれば
助かります。
Unicodeには不案内なので分かりにくい説明ですいません(^^;



[ ]
RE:06120 UTF-8のロシア語で使用される特No.06121
秀丸担当 さん 05/01/04 16:05
 

>ダンプしたところ、
>E2,80,94
>となる文字です。(ちなみに、「あ」は、E3,81,82です)
>この文字を変数に代入してマクロの insert を用いると
>内部処理で無効化されているようで、「?」となります。
>今のままでも別の方法で対処できますが、対応可能であれば
>助かります。
>Unicodeには不案内なので分かりにくい説明ですいません(^^;

現状では、マクロで扱われる文字列は、Shift-JISしか対応していません。
Unicodeの入力はできません。
「あ」の場合 insert "\x82\xA0"; になります。

カーソル位置にある文字のUnicodeのコードの取得だけはできます。
キーワードunicodeで取得することができます。

[ ]
RE:06121 UTF-8のロシア語で使用される特No.06123
ivan さん 05/01/04 23:34
 
>現状では、マクロで扱われる文字列は、Shift-JISしか対応していません。
>Unicodeの入力はできません。
>「あ」の場合 insert "\x82\xA0"; になります。

こちらの行っている作業を具体的に言いますと、

新規ファイルに「あ」と一文字入力して、
saveas "test.txt",utf8;
と、utf8で保存し、

selectall;
cut;
beginclipboardread;
$a = getclipboard;
loaddll hidemarudir+"\\DengakuDLL.dll";
#r = dllfunc("BRE_LOAD", hidemarudir+"\\BREGEXP.DLL");
$a = dllfuncstr("BRE_SUBST", "s/あ/い/g", $a);
#m = dllfunc("BRE_FREE");
freedll;
insert $a;
save;
endmacro;

とマクロを実行させますとファイルには「い」が挿入されて、
ダンプで見ると、
E3,81,84
になっています。
一方、投稿番号06120に書きました、
E2,80,94
というコードの文字はUTF8のファイルで表示可能なのですが、
変数に代入して insert を用いると「?」となるので、秀丸には
UTF8文字の中で処理できる文字と出来ない文字があるんではないかと
思った次第です。





[ ]
RE:06123 UTF-8のロシア語で使用される特No.06124
秀丸担当 さん 05/01/05 18:07
 

>とマクロを実行させますとファイルには「い」が挿入されて、
>ダンプで見ると、
>E3,81,84
>になっています。

秀丸内のマクロの処理はShift-JISだけです。
これはたぶん、マクロ実行時は、BRE_SUBSTの返り値は"\x82\xA2"が返っていて、
「い」が挿入されています。
save;の段階で、現在のエンコードの種類がUTF-8であるため、
82,A2 が E3,81,84 に変換されて保存されます。

マクロ中であっても、読み込みと保存でエンコードの種類の指定がある場合は、
Shift-JISではなく指定のエンコードで保存されます。

[ ]
RE:06124 UTF-8のロシア語で使用される特No.06125
ivan さん 05/01/05 22:00
 
>秀丸内のマクロの処理はShift-JISだけです。
>これはたぶん、マクロ実行時は、BRE_SUBSTの返り値は"\x82\xA2"が返っていて、
>「い」が挿入されています。

大体分かってきましたので、まとめますと、

新規ファイルに「あ」と一文字入力して、
saveas "test.txt",utf8;
selectall;
cut;
beginclipboardread;
$a = getclipboard;

の getclipboard の時に秀丸は「あ」を Shift-JIS の "\x82\xA2"
と解釈しており、Utf8文字の「あ」から Shift-JIS の「あ」への
変換はWindows か 秀丸自体の開発言語の仕様によって行われている、

となるようですね。


[ ]