我有一個字符串來自ASP頁面,我試圖將URL解碼並將其顯示在ASP.Net頁面中。從ASP到ASP.Net的URLDecoding字符串問題(國際字符)
string str = @"%A0%A01stk.+%D8repynt+%3Cbr%3E%A0%A01stk.+Slipsn%E5l+%3Cbr%3E%3Cp%3E+Total+pris%3A+300";
如果你看一下%D8
時通過HttpUtility.UrlDecode
運行它應該被翻譯成挪威文字Ø
。但事實並非如此。根據我試圖進行的轉換,它會變成不同的東西,但從來沒有Ø
。 %E5
應該變成å
。
下面是一些轉換代碼,我一直在試用:
public static string Convert(string text)
{
text = HttpUtility.UrlDecode(text);
var isoEncoder = System.Text.Encoding.GetEncoding("ISO-8859-1");
var utf8Encoder = new UTF8Encoding();
byte[] txtBytes = isoEncoder.GetBytes(text);
byte[] convertedBytes = System.Text.Encoding.Convert(isoEncoder, System.Text.Encoding.UTF8, txtBytes);
return utf8Encoder.GetString(convertedBytes);
}
根據Wikipedia article on Ø:使用「美國英語 - 國際」鍵盤設置
在Microsoft Windows上,它可以通過鍵入按住Alt-Gr鍵並按下「L」。如果系統使用代碼頁1252作爲系統默認值,則可以在數字鍵盤上按住[Alt]鍵的同時在數字鍵盤上鍵入0216或0248,在任何鍵盤設置下鍵入它。 (代碼頁1252是ISO 8859-1的超集,而216和248是十六進制D8和F8的十進制等價物。)
這似乎表明輸入字符串格式正確(%D8 =Ø) 。
什麼是ASP.NET頁面的[字符集](http://www.joelonsoftware.com/articles/Unicode.html)? – CodeCaster
來自服務器的迴應稱爲「Content-Type:text/html;字符集= UTF-8'。我也忘了提及我無法對web.config進行任何重大更改,因爲它是大量頁面的通用配置文件。 –