2013-04-04 156 views
1

我遇到了編碼問題,我不確定如何處理。我們有一個我們給出的鏈接(電子郵件和其他方式),其中包含非ASCII字符(特別是æ,ø,å等)。問題是,根據用戶打開哪個瀏覽器鏈接,我們收到的查詢字符串編碼方式不同。在經典ASP中檢測查詢字符串編碼

在大多數瀏覽器它的編碼爲UTF-8這樣的:
%C3%A5 = å

然而,在Internet Explorer中它的編碼像這樣的ISO-8859:
%E5 = å(或者它只是被作爲å根本沒有查詢字符串編碼)。

的問題是,如果我在Chrome閱讀查詢字符串,我得到Ã¥,而不是å,而在IE中我得到å,所以我需要要麼確保服務器考慮到手頭的編碼,或在一些方法客戶端總是以特定的編碼發送,如前所述,問題在於我無法控制鏈接的使用位置。

任何幫助,將不勝感激。

+0

正在改變字符字符串/ URL ASCII字符不是一種選擇? – Dave 2013-04-04 11:19:12

+2

它們是否在源代碼的鏈接中編碼?鏈接應該是'' – Esailija 2013-04-04 11:19:14

+0

@DaveRook這是最後的選擇,因爲問題是我們想發送名稱(用戶可以識別的名稱)而不是實例ID(它總是一個與用戶無關的號碼)。這些鏈接在我們自己的頁面上顯示時可以正常工作(因爲我們可以控制字符集),但是當通過Skype /電子郵件發送時,鏈接無法正常工作。目前我們似乎必須將其更改爲ID。 – Alxandr 2013-04-04 11:52:08

回答

0

嘗試將此嵌入到您的asp的頂部。

Response.ContentType = "text/html" 
Response.AddHeader "Content-Type", "text/html;charset=UTF-8" 
Response.CodePage = 65001 
Response.CharSet = "UTF-8" 

應該迫使所有瀏覽器使用UTF-8

+0

對於後續的請求,是的,但我們正在討論可能在郵件或其他地方完全(不在瀏覽器中)點擊的鏈接。換句話說,瀏覽器在傳輸數據之前沒有辦法獲取這些標題。 – Alxandr 2013-05-01 01:19:22