8

文字列にUnicodeを割り当てようとしていますが、「Привет」文字列を「Привет」として返しますが、「Привет」が必要です。次の関数で変換しています。

public string Convert(string str)
{
    byte[] utf8Bytes = Encoding.UTF8.GetBytes(str);
    str = Encoding.UTF8.GetString(utf8Bytes);
    return str;
}

この問題を解決して「Привет」を返すにはどうすればよいですか。

4

2 に答える 2

8

ПはUnicode文字0x041Fであり、そのUTF-8エンコーディングは0xD0 0x9F結果としてП

コメント投稿者がすでに説明したように、関数は入力パラメーターのみを返すため、元の入力文字列は実際にはUTF-8であり、ネイティブの.Net文字列に変換すると結論付けます。

元の文字列はどこから来たのですか?

入力をC#に読み込む代わりにstring、コードを変更して。を読み込んでbyte[]から、を呼び出しますEncoding.UTF8.GetString(inputUtf8ByteArray)

于 2013-01-28T11:12:10.420 に答える
4

以下のコードを試してみましたが、結果は次のとおりです。

        string test="Привет";
        byte[] utf8Bytes = Encoding.UTF8.GetBytes(test);

        String str1 = Encoding.Unicode.GetString(utf8Bytes);
        String str2 = Encoding.UTF8.GetString(utf8Bytes);

str1=鿐胑룐닐뗐苑の出力

str2=Привет の出力

于 2013-01-28T10:57:24.990 に答える