0

この文字列は、C# アプリケーションの URL から HTTP Post 経由で返されました。これには、次のような漢字が含まれています。

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)

%>

Web からの出力は正しいです。しかし、C# アプリケーションへの http ストリームでいくつかの変更が行われたかどうか疑問に思っていました。

ありがとう。

4

2 に答える 2

1

最初に Web ページをバイトとしてダウンロードします。次に、バイトを正しいエンコーディングに変換します。

最初に間違ったエンコーディングを使用して変換すると、おそらくデータが失われます。特に 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 に答える