2013-10-16 98 views
1

在某些Windows Store應用,我需要發送URL一樣.NET爲Windows應用商店的應用程序:以UrlEncode

new Uri(string.Format(@"http://www.site.com?word={0}", 
             sourceText)) 

,其中sourceText是一些文本的轉義表示。如果我需要UTF-8,這很容易,但我需要Windows-1251編碼。

我已經試過

byte[] unicodeBytes = Encoding.Unicode.GetBytes(sourceText); 
    byte[] win1251bytes = Encoding.Convert(Encoding.Unicode, Encoding.GetEncoding("windows-1251"), unicodeBytes); 
    string sourceText = 
     Uri.EscapeUriString(Encoding.GetEncoding("windows-1251").GetString(win1251bytes, 0, win1251bytes.Length)); 

Uri.EscapeUriString使用string,它會自動轉換爲Unicode。

我可以使用HttpUtility.UrlEncode(word, Encoding.GetEncoding(1251),但在Windows應用商店的.NET中沒有System.Web.HttpUtility

例如,UTF-8中的'привет':%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82;在Windows-1251中的 :%EF%F0%E8%E2%E5%F2。我需要第二個字符串

回答

0
string sourceText = "привет"; 
byte[] win1251bytes = Encoding.GetEncoding("windows-1251").GetBytes(sourceText); 
string hex = BitConverter.ToString(win1251bytes); 
string result = "%" + hex.Replace("-", "%"); 
// Result: %EF%F0%E8%E2%E5%F2 
相關問題