C# 和 utf8_decode

发布于 2024-08-08 09:37:49 字数 120 浏览 10 评论 0原文

是否有 C# utf8_decode 等效项?

Is there a C# utf8_decode equivalent?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

再见回来 2024-08-15 09:37:49

使用 Encoding 类。

例如:

byte[] bytes = something;
string str = Encoding.UTF8.GetString(bytes);

Use the Encoding class.

For example:

byte[] bytes = something;
string str = Encoding.UTF8.GetString(bytes);
黯然#的苍凉 2024-08-15 09:37:49

是的。您可以使用 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 代码点。

Yes. You can use the System.Text.Encoding class to convert the 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

edit: or simply

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

string (System.String) is always unicode encoded, i.e. if you convert the byte sequence back to string (Encoding.GetString()) your data will again be stored as utf-16 codepoints again.

衣神在巴黎 2024-08-15 09:37:49

如果您的输入是字符串,这里的方法可能会起作用(假设您来自西欧:)

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

当然,如果 inputData 的当前编码不是 latin1,请将“iso-8859-1”更改为正确的编码。

If your input is a string here is a method that would probably work (assuming your from wester europe :)

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

Of course, if the current encoding of the inputData is not latin1, change the "iso-8859-1" to the correct encoding.

她如夕阳 2024-08-15 09:37:49

我尝试在 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);
        }

I tried to make this implementation on Xamarin C#.

The code below worked for me:

        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);
        }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文