getinistrで文字化けNo.08643
colder さん 15/06/29 21:00
 
colderです

いつ頃からか分かりませんが、外国語のファイルでマクロを実行すると、getinistr
で文字化けが発生します。

環境win7 秀丸ver8.54β10

[ ]
RE:08643 getinistrで文字化けNo.08644
秀丸担当 さん 15/06/30 09:51
 

バグ情報ありがとうございます。
例えばShift-JISで書かれたiniファイルの内容を、欧文のエンコーディングとし
て読み込まれたファイル上に挿入すると、確かに文字化けしているように見えま
す。

INIファイルの例:
[sec]
item=秀丸

マクロの例
insert getinistr("C:\\xxx\\test.ini","sec","item");

欧文のファイル上で実行すると" GSU"に発音記号が付いたような文字が挿入され
ます。
こういうことだとしたら、以前からそうなっていました。
8f 47 8a db というバイト列を欧文として解釈しているということになっていま
した。
そういうことではないとしたら、再現できそうなサンプルがあると助かります。

[ ]
RE:08644 getinistrで文字化けNo.08645
colder さん 15/06/30 13:52
 
>INIファイルの例:
>[sec]
>item=秀丸
>
>マクロの例
>insert getinistr("C:\\xxx\\test.ini","sec","item");
>
>欧文のファイル上で実行すると" GSU"に発音記号が付いたような文字が挿入され
>ます。
>こういうことだとしたら、以前からそうなっていました。
>8f 47 8a db というバイト列を欧文として解釈しているということになっていま
>した。
>そういうことではないとしたら、再現できそうなサンプルがあると助かります。
確かにinsert文では昔からそうなっていますね。
こちらでは、message文(及びopenfile文)で表示(利用)しています。
//書き出し側マクロ
writeinistr "d:\\test.ini", "test", "file", "データファイル";
//読み込み側マクロ
$s = getinistr("d:\\test.ini", "test", "file");
openfile $s;

ver 8.33β2以前は上のマクロ(両者ともUnicodeで保存)でデータファイルが開けてい
たのですが、現バージョンでは開けません。

[ ]
RE:08645 getinistrで文字化けNo.08646
秀丸担当 さん 15/06/30 15:30
 

詳しい情報ありがとうございます。
マクロで再現させることができました。
確かにV8.33β3の修正が影響していました。
マクロファイルがUnicode(UTF-16)で、開いているファイルが欧文のときに再現
させることができました。
次のβ版で修正させていただきます。

[ ]