1

在某些 Windows Store 应用程序中,我需要发送 URL,例如

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。

我可以使用.NET HttpUtility.UrlEncode(word, Encoding.GetEncoding(1251),但System.Web.HttpUtility在 .NET for Windows Store 中没有。

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

4

2 回答 2

6

怎么样WebUtility.UrlEncode

它位于 System.Net 命名空间中,更多信息在这里:http: //msdn.microsoft.com/en-us/library/system.net.webutility.urlencode.aspx

于 2014-09-23T22:37:27.503 回答
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
于 2013-10-16T10:25:49.750 回答