2011-07-11 17 views
2

私はCD Classic./Messageオブジェクトを使用して電子メールを送信するためにASP Classic/VBScriptを使用しています。 '(標準文字とは対照的に)一重引用符またはアポストロフィー文字が受信者の電子メールに表示されるようです:â?TいくつかのアポストロフィがHTML形式の電子メールでâ?Tとして表示されます

どこが問題で、これを解決する最善の方法はありますか?私は実際にすべてを 'to'に変更するために置き換えを実行しようとしましたが、うまくいかなかったようです。

私は実際には、これら2つの異なる文字の違いは何か、そしてMicrosoftのような一部のサイトでは「なぜ?

+1

あなたの質問への答えではなく、編集としてあなたのソリューションを投稿してください。その後、あなた自身の答えを受け入れてください。これによりあなたの質問は解決済みとマークされます。 –

答えて

0

これは実際に文字エンコーディングの問題でした。解決策は、フォームを含むWebページに2行のコードを挿入することでした。私は実際にinc_globals.aspという名前のグローバルインクルードファイルの先頭にこれらのコード行を追加することを選択しました。このファイルはすべてのページの上部に表示されます。ここでは、問題を修正したコードです:ドキュメントの問題として

Response.CodePage = 65001 
Response.CharSet = "utf-8" 

は、ここにこのケースを解決するのに役立ちましたポストです: http://groups.google.com/group/microsoft.public.inetserver.asp.general/browse_thread/thread/b79e6b95e24ef0fe/a25c643aaf12770d

1

http://www.hanselman.com/blog/WhyTheAskObamaTweetWasGarbledOnScreenKnowYourUTF8UnicodeASCIIAndANSIDecodingMrPresident.aspx

すべての情報あなたは、文字符号化に必要とすることができます。

+1

あなたは答えが根本的に正しいですが、私のオリジナルの質問の1つに「これを解決する最善の方法はありますか? – HK1

+0

@ HK1その後、あなたは最高のものとして受け入れていない間に役立つ答えを提供するために彼をupvoteすることができます... – robertc

+0

@ HK1、ごめんなさい、最も良い方法はSmartQuotesを使用しないことですが、何らかの理由で使用しているエンコーディングを指定して、クライアントがバイトの解釈方法を知っている必要があることを発見しました。 – Stuart

0

CDO.Messageオブジェクトの.BodyPart.Charsetに正しい文字エンコードを設定する必要があります。

"utf-8"に設定する必要があります。the default appears to be "us-ascii"です。

+0

私はあなたの提案を試みたが、それは違いはなかった。私もBodyPart.ContentTransferEncoding = "quoted-printable"を試してみましたが、どちらも役に立ちませんでした。あなたの提案がうまくいかなかった理由について私は困惑しています。私はあなたが示唆したように.BodyPart.Charsetを変更するためにGoogleを使って他の多くの参考文献を探しています。 – HK1

+0

@ HK1あなたは身体部分に追加している文字列がどの文字列であるか知っていますか?それが単なるデフォルトの文字列オブジェクトであれば、 "utf-16"かもしれません。ヘッダーに['urn:schemas:mailheader:content-transfer-encoding']を設定する必要があるかもしれません。(http://msdn.microsoft.com/en-us/library/ms875081%28v=exchg.65% 29.aspx)あなたが送信しているものと一致するようにします。 – robertc

0

メールはHTML形式で書かれています。あなたはHTMLエンティティを使ってみましたか?アポストロフィの場合は、'にする必要があります。 VBで

Replace mailBody, "'", "'" 
関連する問題