在 UTF-8 網頁上提供 Outlook 2003 的中文超連結


過去在 asp 或是靜態網頁上,可以很簡單的用 mailto:璉璉(abcde@live.com)?subject=標題 的方式提供網頁瀏覽者快速連結,仔細檢視,這時候的網頁編碼採用 big5 。
 
可是在 ASP.NET 網頁上,多半採用 UTF-8 編碼,以容納跨國的語系支援,這時候會發現上面的超連接會造成 Outlook 2003 讀成亂碼,所以大部分的網站多半取消此功能或是改回在 big5 編碼。
 
在 Live Spaces 上,可以看到有此功能,先前看到都沒特別注意,今天剛好檢視了一下,發覺他是這樣的編碼:%E6%A3%E6%A3 等,早在兩年前前我試過用 Server.UrlEncode ,那時候仍然是亂碼,所以我想應該不單純是直接編碼的問題。
 
比對編碼後,發覺用的是 big5 編成 Url 字串,而一般使用 Server.UrlEncode 則是用 Unicode 編碼,換句話說,.Net 是沒辦法直接編碼,必須自己編碼。這部分我覺得還是要去 http://connect.microsoft.com/ 去做建議,現在沒空去寫成一篇建議,因為要先搜尋 Microsoft 有沒有既有解決方案,這部分需要點時間。
 
經過改寫後,超連結已經可以直接支援 Outlook 2003 解讀中文字,例如:
 
這個我試過 Outlook 2003 可以,其他郵件軟體則不知道是否支援,若試過直接點選超連結其他郵件軟體可以正確解讀中文,煩請回應本訊息,讓大家知道相容清單有哪些。
廣告
Categories: 技術分享 | 4 則迴響

文章分頁導航

4 thoughts on “在 UTF-8 網頁上提供 Outlook 2003 的中文超連結

  1. 子璉

    Outlook Express 6.0 / Vista Windows Mail 可以
    Outlook 2007 不支援

  2. 川™

    您好:
       我目前手上的專案剛好遇到這個問題,在GooGle 搜尋剛好找到您,
       不知可否提供此解決方案~~感激不盡~~ ^+++++^
                                                     川

  3. 子璉

    這樣看不懂嗎?
    懶一點,不分中英文全部編碼的話,可以這樣寫:
     Function GetEMailLink(ByVal eMailLink As String) As String  Dim arrBytes() As Byte = Encoding.GetEncoding("big5").GetBytes(eMailLink)  Dim arrHex(UBound(arrBytes)) As String  For i As Integer = 0 To UBound(arrBytes)   arrHex(i) = arrBytes(i).ToString("X")  Next  Return "%" & Join(arrHex, "%") End Function
     
    然後這樣用:
    <a href=’mailto:<% =GetEMailLink(strEMail) %>’><% =strEMail %></a>
     
    我整理了一個範例,可以自己輸入 eMail 測試:
    http://tlcheng.twbbs.org/Model/Online/Samples/eMail/Link.aspx
    註:全部編碼 IE 也會自動轉回英數,可以比對原始碼就知道了。

  4. Jeffrey

    這個需求應該可以用HttpUtility.UrlEncode("中文", Encoding.GetEncoding("big5"))來搞定

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

在WordPress.com寫網誌.

%d 位部落客按了讚: