【问题标题】:How to convert a string to UTF8?如何将字符串转换为 UTF8?
【发布时间】:2012-02-01 05:26:19
【问题描述】:

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

【问题讨论】:

标签: c# .net character-encoding


【解决方案1】:

这个 sn-p 用 UTF-8 编码的字符串创建一个字节数组:

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

【讨论】:

  • 为什么不直接使用Encoding.UTF8.GetBytes 而不是new添加另一个编码器?
  • @JesseC.Slicer 这个 sn-p 来自Microsoft's examples for the UTF8Encoding class 之一。我不是 100% 确定他们为什么选择这样做,但我认为这是为了线程安全(他们提到不能保证实例成员是线程安全的,但这只是我的猜测)。
  • @CAS 我不知道,请单独提问。
【解决方案2】:

试试这个功能,它应该可以立即修复它。不过,您可能需要修正命名约定。

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;
}

【讨论】:

  • 使用它来使您的字符串 1. 在保存到数据库之前兼容 XML,2.(或)在导出到 CSV 之前兼容 CSV
【解决方案3】:

这应该是最少的代码:

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

【讨论】:

    【解决方案4】:

    试试这段代码

     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());
    

    【讨论】:

      猜你喜欢
      • 2014-01-29
      • 2012-07-17
      • 1970-01-01
      • 2012-11-04
      • 1970-01-01
      • 2017-05-18
      • 2014-02-24
      • 1970-01-01
      • 2010-12-04
      相关资源
      最近更新 更多