|
>runex でutf-16を指定したとき、
>1)外部プログラムの出力はBOM無しでないといけないのでしょうか
試してみたところ、BOMの解釈はしていなくて、そのまま出力されていました。
>2)外部プログラムが返した結果に対して何か変換を掛けていますか?
「>con」相当のことをしている場合、貼り付けに近い処理をしています。
貼り付けでは、改行コードが混在している場合、都合のいいように解釈されてし
まう可能性があるかもしれないです。
下記サンプルではこちらで試して限りでは問題は見られませんでした。
「>filename.xxx」相当のことをしている場合は、そのままファイルに出力され
ます。
> ファイルの内容が
>test↓
> のとき、これをそのまま出力するプログラムを通すと
> バイナリで次のようになりました。
>
>74,65,73,74,0D,0A,0D,00,0A,00,
>
> プログラム単体では正常動作します。
元のファイル内容がUTF-16ではなくShift-JISなどのASCIIテキストなのだと思い
ますが、これをUTF-16として解釈すると、「整瑳・」というような文字化けした
テキストになると思います。そのことを言われているとしたら、正しいかもしれ
ないです。
最後の 0D, 00, 0A 00 は UTF-16の改行コードだと思います。
これが勝手に入ってしまうということでしたら、何かバグがあるのかもしれない
です。
サンプルプログラムで、
//"test↓"(↓はCR+LF)
WriteFile( hstdout, "\x74\x65\x73\x74\x0D\x0A", 6, &cb, NULL );
というようなプログラムを作って、マクロは以下のようなマクロ
runex "test.exe"
, 1, 0, ""
, 1, "" //stdout
, 0, "" , 0, "", 1, 1
, 2 //unicode
;
で試してみて、これをUTF-16で保存した後の結果はバイナリで以下のようになり
ました。
74,65,73,74,0D,0A
という結果になり、 0D, 00, 0A 00 は入りませんでした。
もし出力結果に対して手動で改行を入れられているとしたら、言われている結果
になるかもしれません。
お手数ですが、具体的なマクロやファイル内容,操作手順などを教えていただけ
ると何かわかるかもしれないです。
|
|