FindBook2復帰値の文字化けNo.04138
江袋 さん 12/04/19 08:25
 
V5.76β2+HTMLメールViewer(V2.16)を使用しています。

海外から送信されたメールで、FindBook2復帰値が文字化けします。
(ドイツから送られてきたHTMLメール)

具体的には以下のマクロを実行した場合です。

$h = dllfuncstr("CurrentHeader", "To");
$l = dllfuncstr("GetEmailList", $h, 0);
$s = dllfuncstr("FindBook2", $l);
message("$s = "+$s);

通常、$sはアドレス帳の内容に従い、以下のように表示されます。
"氏名/FirstName LastName"

ところが問題のメールは、"氏名"の部分が文字化けします。
(関係しそうなヘッダーは以下の通り)
Accept-Language: en-US
Content-Language: de-DE
X-Body-Content-Type: text/html; charset=gb2312 (original="utf-8")

また、アメリカから送られたHTMLメールは問題なく表示されます。
(関係しそうなヘッダーは以下の通り)
Accept-Language: en-CA
Content-Language: en-US
X-Body-Content-Type: text/plain; charset="us-ascii"

いずれもOutlookで送信したメールですが、原因分かりますでしょうか?

[ ]
RE:04138 FindBook2復帰値の文字化けNo.04139
秀まるお さん 12/04/19 13:39
 
 コードページの違いの関係でおかしくなってるんだと思います。こちらでちょ
っとテストしてみたんですが、起きる例は確認出来ました。

 ドイツ語ではないんですが、例えばFindBook2関数を実行した時の結果が日本
語の"テスト"になるようにメールを作成&アドレス帳に登録していたとします。

 それで例えば、そのメールをエディタで開いて、「設定・編集を許可」とした
上で、「設定・文字コード・簡体字中国語」とします。

 そこでマクロ実行すると、

   $s = ・ニ・ケ・ネ        (実際は半角文字)

 のようになってしまいます。これは、"テスト"の文字列がコードページ936で


 テ = 0xA5 0xC6
 ス = 0xA5 0xB9
 ト = 0xA5 0xC8

 になってしまって、message文はそれを日本語コードページで実行するのでそ
うなってしまいます。

 ですが、例えば「insert $s;」とすると、うまく"テスト"が入ります。

 この問題(message文の問題)は実は以前から分かっていたことではあるんで
すが、これを直してしまうと非互換が出るかもしれないということで、あえて直
さないってことになってるようです。

 現状では、この回避策として、

    #objShell = createobject("WScript.Shell");
    callmethod #objShell, "PopUp", "$s = "+$s;

 のようにする作戦があります。

 とりあえずmessage文での問題とうことでしたら、今の所はそれで回避をお願
いしたい所です。

 こちらでテストした限りは欧文ではこの問題は出ないので、もしかしたら何か
別の問題かもしれませんけども…。そうだとしたら、例えば具体的にどういう文
字列がどんな風に化けて出てるかの例など教えていただければ、原因が分かるか
なぁと思います。

[ ]
RE:04139 FindBook2復帰値の文字化けNo.04140
江袋 さん 12/04/19 16:05
 
>    #objShell = createobject("WScript.Shell");
>    callmethod #objShell, "PopUp", "$s = "+$s;

本件はmessageの問題でしたので、これで文字化けしなくなりました。
回避策のご教授ありがとうございました。

[ ]