如何将字符串转换为UTF8?

11

我有一个包含一些Unicode字符的字符串,如何将其转换为UTF-8编码?


1
我认为这对你有所帮助。https://dev59.com/znRB5IYBdhLWcg3w1Khe - Bishan
4个回答

22

这段代码将使用UTF-8编码将您的字符串转换为字节数组:

UTF8Encoding utf8 = new UTF8Encoding();
string unicodeString = "Quick brown fox";
byte[] encodedBytes = utf8.GetBytes(unicodeString);

8
为什么不直接使用Encoding.UTF8.GetBytes而要创建另一个编码器的实例? - Jesse C. Slicer
1
@JesseC.Slicer 这段代码片段来自于微软UTF8Encoding类的示例之一。我不确定他们为什么选择这样做,但我猜想这是为了线程安全(他们提到实例成员不能保证线程安全,但这只是我的猜测)。 - Sergey Kalinichenko
@CAS 我不知道,请提出一个单独的问题。 - Sergey Kalinichenko

4

尝试使用此函数,这应该可以立即解决问题。但您可能需要修改命名约定。

private string UnicodeToUTF8(string strFrom)
{
    byte[] bytSrc;
    byte[] bytDestination;
    string strTo = String.Empty;

    bytSrc = Encoding.Unicode.GetBytes(strFrom);
    bytDestination = Encoding.Convert(Encoding.Unicode, Encoding.ASCII, bytSrc);
    strTo = Encoding.ASCII.GetString(bytDestination);

    return strTo;
}

使用此功能可在保存到数据库之前使字符串与XML兼容,或在导出为CSV之前使其与CSV兼容。 - Arvin

3

代码应该尽可能简洁:

byte[] bytes = Encoding.Default.GetBytes(myString);
myString = Encoding.UTF8.GetString(bytes);

2
尝试运行这段代码。
 string unicodeString = "Quick brown fox";
 var bytes = new List<byte>(unicodeString);
        foreach (var c in unicodeString)
            bytes.Add((byte)c);
        var retValue = Encoding.UTF8.GetString(bytes.ToArray());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接