【问题标题】:C# convert byte[] to string with a charsetC# 将 byte[] 转换为带有字符集的字符串
【发布时间】:2012-03-06 11:15:40
【问题描述】:

在 C# 中,我们如何将 byte[] 转换为带有 charset.eg utf8、SHIFT_JIS 等的字符串 .我知道Encoding.UTF8

byte[] inputBytes =SupportClass.ToByteArray(readBytes);
StringBuilder result;
result.Append(System.Text.Encoding.UTF8.GetString(inputBytes,0,inputBytes.Length));//get unreadable code.

我的问题是如何从 inputBytes 中获取具有特殊字符集的结果,例如 java

StringBuffer result.append(new String(buffer, "SJIS"));

【问题讨论】:

    标签: c# string bytearray


    【解决方案1】:
    System.Text.Encoding enc = System.Text.Encoding.GetEncoding("shift-jis");
    result.Append(enc.GetString(inputBytes,0,inputBytes.Length));
    

    见这篇文章:

    http://msdn.microsoft.com/en-us/library/aa332097(v=vs.71).aspx

    【讨论】:

    • 很好的答案,但是当我使用 System.Text.Encoding.GetEncoding("GB18030") 时,它似乎没有触发。出了什么问题,确实需要编码名称“gb2312”,但是在您的链接页面中我找不到这个编码名称;这让我很困惑。
    • GB18030 和 GB2312 都可以与 GetEncoding (msdn.microsoft.com/en-us/library/…) 一起使用 - 请说明您面临的问题(可能在新问题中)。
    • wp7中不支持gb2312!
    【解决方案2】:

    使用Encoding.GetEncoding,而不是Encoding.UTF8

    例如

    private static readonly Encoding SHIFT_JIS = Encoding.GetEncoding("Shift_JIS");
    
    SHIFT_JIS.GetString(inputBytes,0,inputBytes.Length)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-19
      • 2012-12-20
      • 2010-10-07
      • 1970-01-01
      • 2013-01-17
      • 2015-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多