是否有C#utf8_decode等价物?
答案 0 :(得分:10)
答案 1 :(得分: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);
string(System.String)始终是unicode编码的,即如果将字节序列转换回字符串(Encoding.GetString()),您的数据将再次存储为utf-16代码点。
答案 2 :(得分:1)
如果您的输入是一个字符串,这里的方法可能会有效(假设您来自韦斯特欧洲:)
public string Utf8Decode(string inputDate)
{
return Encoding.GetEncoding("iso-8859-1").GetString(Encoding.UTF8.GetBytes(inputDate));
}
当然,如果inputData的当前编码不是latin1,请将“iso-8859-1”更改为正确的编码。
答案 3 :(得分: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);
}