4

C#utf8_decodeに相当するものはありますか?

4

4 に答える 4

10

Encodingクラスを使用します。

例えば:

byte[] bytes = something;
string str = Encoding.UTF8.GetString(bytes);
于 2009-10-19T13:29:02.687 に答える
4

はい。System.Text.Encodingクラスを使用して、エンコーディングを変換できます。

string source = "Déjà vu";
Encoding unicode = Encoding.Unicode;
// iso-8859-1 <- codepage 28591
Encoding latin1 = Encoding.GetEncoding(28591); 
Byte[] result = Encoding.Convert(unicode, latin1, unicode.GetBytes(s));
// result contains the byte sequence for the latin1 encoded string

編集:または単に

string source = "Déjà vu";
Byte[] latin1 = Encoding.GetEncoding(28591).GetBytes(source);

文字列(System.String)は常にUnicodeでエンコードされます。つまり、バイトシーケンスを文字列(Encoding.GetString())に戻すと、データは再びutf-16コードポイントとして格納されます。

于 2009-10-19T13:28:09.427 に答える
1

入力が文字列の場合、ここはおそらく機能するメソッドです(westereuropeからの場合:)

public string Utf8Decode(string inputDate)
{
    return Encoding.GetEncoding("iso-8859-1").GetString(Encoding.UTF8.GetBytes(inputDate));
}

もちろん、inputDataの現在のエンコーディングがlatin1でない場合は、「iso-8859-1」を正しいエンコーディングに変更してください。

于 2009-10-19T13:40:10.973 に答える
0

Xamarin C#でこの実装を作成しようとしました。

以下のコードは私のために働いた:

        public static string Utf8Encode(string inputDate)
        {
            byte[] bytes = Encoding.UTF8.GetBytes(inputDate);
            return Encoding.GetEncoding("iso-8859-1").GetString(bytes,0, bytes.Length);
        }

        public static string Utf8Decode(string inputDate)
        {
            byte[] bytes = Encoding.GetEncoding("iso-8859-1").GetBytes(inputDate);
            return Encoding.UTF8.GetString(bytes, 0, bytes.Length);
        }
于 2019-06-25T13:23:20.100 に答える