2015-05-14 15 views
0
answers2 = HttpUtility.UrlDecode(Model.FindOne<UserResult>(ur => ur.UserID == user.UserID 
      && ur.ModuleID == 2 
      && ur.TopicID == 9 
      && ur.ActivityID == 2 
      && ur.QuestionID == 2).Results, Encoding.ASCII).Split('|'); 

結果字段包含在SQL數據庫中編碼爲ASCII的德語字符。我正在使用批量短信發送服務,要求將特殊字符作爲ASCII碼發送。HttpUtility.UrlDecode從UTF-8編碼爲ASCII

它不具有難度解碼「%7C」和「%20」看見作爲UTF-8和ASCII碼對於它是相同的。如果我使用UTF-8(%c3%a4)發送字符,它可以正常工作,但如果我將其更改回ASCII(%E4),SMS會發送一個問號來代替字符。

我指出的ASCII解碼方案似乎沒有工作,我不知道我做錯了什麼。

+1

你必須詳細說明。 'UserResult'搜索與'HttpUtility.UrlDecode'或你的編碼問題沒有關係。舉個適當的例子。你如何將這個url保存在你的數據庫中?它是什麼類型的數據庫? –

回答

1

%E4不是ASCII。如果你想用這樣的價值觀,你必須使用你想用實際的編碼,例如:

Encoding.GetEncoding("iso-8859-2").GetString(new byte[] { 0xE4 }) 

產生ä,而

Encoding.ASCII.GetString(new byte[] { 0xE4 }) 

產生?

ASCII僅描述前128個字節值 - 其餘爲特定編碼,延伸 ASCII。所以你想任何超過128 ASCII較大解碼任何時候,你會得到?

顯然,這也適用於相反的 - 這不是ASCII的一部分(和你ä肯定不是)將被編碼爲63任何字符 - 也被稱爲? :)