2013-10-16 2 views
1

일부 Windows 스토어 앱에서 나는 sourceText이 텍스트의 이스케이프 된 표현입니다 .NET :를 UrlEncode

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

, 같은 URL을 보낼 필요가있다. 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을 시도했습니다.

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