4

是否有 C# utf8_decode等价物?

4

4 回答 4

10

使用编码类。

例如:

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

如果您的输入是一个字符串,这是一种可能有效的方法(假设您来自西欧:)

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 回答