0

我已经通过 HTTP Post 从 C# 应用程序中的 URL 返回了这个字符串,其中包含一些中文字符,例如:

Gelatos® Colors Gift Set中文

问题是我想将其转换为

Gelatos® Colors Gift Set中文

这两个字符串实际上是相同的,但编码不同。我明白在 C# 中一切都是 UTF16。我已经尝试在这里阅读有关从一种编码转换为另一种编码的帖子,但没有运气。

希望有人能帮忙。

这是 C# 代码:

WebClient wc = new WebClient();
json = wc.DownloadString("http://mysite.com/ext/export.asp");

textBox2.Text = "Receiving orders....";

//convert the string to UTF16
        Encoding ascii = Encoding.ASCII;
        Encoding unicode = Encoding.Unicode;
        Encoding utf8 = Encoding.UTF8;

        byte[] asciiBytes = ascii.GetBytes(json);
        byte[] utf8Bytes = utf8.GetBytes(json);
        byte[] unicodeBytes = Encoding.Convert(utf8, unicode, utf8Bytes);

        string sOut = unicode.GetString(unicodeBytes);

System.Windows.Forms.MessageBox.Show(sOut);  //doesn't work...

这是来自服务器的代码:

<%@CodePage = 65001%>
<%option explicit%>
<%
Session.CodePage = 65001
Response.charset ="utf-8"
Session.LCID     = 1033 'en-US

..... response.write (strJSON)

%>

网络上的输出是正确的。但我只是想知道是否对 C# 应用程序的 http 流进行了一些更改。

谢谢。

4

2 回答 2

1

首先将网页下载为字节。然后,将字节转换为正确的编码。

通过首先使用错误的编码进行转换,您可能会丢失数据。特别是使用ASCII。

于 2013-07-10T09:21:39.020 回答
0

如果服务器真的返回 UTF-8 文本,你可以WebClient通过设置它的Encoding属性来配置你的。这将消除任何后续转换的需要。

using (WebClient wc = new WebClient())
{
    wc.Encoding = Encoding.UTF8;
    json = wc.DownloadString("http://mysite.com/ext/export.asp");
}
于 2013-07-10T10:19:37.813 回答