2011-07-11 36 views
2

我使用ASP Classic/VBScript使用CDO.Message對象發送電子郵件。看起來,單引號或撇號字符'(與標準字符相反)在收件人電子郵件中顯示爲:'T一些撇號在HTML電子郵件中顯示爲'

問題在哪裏以及解決此問題的最佳方法是什麼?我實際上嘗試運行一個替換來改變所有'到',但它似乎沒有奏效。

我想我真的不確定這兩個不同的字符之間有什麼區別,以及爲什麼有些網站(例如Microsoft)使用'。

+1

請發表您的解決方案作爲一個答案,而不是一個編輯您的問題。然後接受你自己的答案。這將標記您的問題已解決。 –

回答

0

這確實是字符編碼的問題。解決方案是在包含我的表單的網頁中放入兩行代碼。我實際上選擇將這些代碼行添加到我命名爲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
+1

你的回答基本上是正確的,但它並不回答我原來的一個問題:「解決這個問題的最好方法是什麼?」 – HK1

+0

@ HK1然後你可以對他提供一個有用的答案,而不接受作爲最好的答案... – robertc

+0

@ HK1,對不起,最好的方法是不使用SmartQuotes,但如果由於某種原因,你必須隨着你發現你必須指定你正在使用的編碼,以便客戶端知道如何解釋字節。 – Stuart

0

您需要在CDO.Message對象的.BodyPart.Charset上設置正確的字符編碼。

最有可能您需要將其設置爲"utf-8"作爲the default appears to be "us-ascii"

+0

我嘗試了您的建議,但沒有任何區別。我也嘗試了BodyPart.ContentTransferEncoding =「quoted-printable」,這也沒有幫助。我很困惑,爲什麼你的建議不起作用。我發現很多其他引用使用Google來改變.BodyPart.Charset,正如你所建議的。 – HK1

+0

@ HK1你知道什麼字符串你添加到身體部分是什麼?如果它只是一個默認的字符串對象,它可能是「utf-16」。您可能還需要在標題中設置['urn:schemas:mailheader:content-transfer-encoding](http://msdn.microsoft.com/zh-cn/library/ms875081%28v=exchg.65% 29.aspx)以匹配您發送的任何內容。 – robertc

0

郵件都寫在HTML格式。你有沒有嘗試過使用HTML實體?對於你的撇號,它應該是'

在VB:

Replace mailBody, "'", "'" 
相關問題