使用System.Text.Encoding.GetEncoding.GetString时的垃圾字符

时间:2010-12-06 16:52:50

标签: c# character-encoding

我从字节数组中提取字符串。该字符串是一个sql脚本。

String sql = System.Text.Encoding.GetEncoding(1200).GetString(script);

第一个角色是垃圾(预览中的方框)。由于整个脚本失败了。知道为什么会这样吗?

我不想专门删除第一个字符。更有兴趣知道为什么以及如何避免这种情况。

1 个答案:

答案 0 :(得分:2)

第一个字符可能是Byte Order Marks (BOM)

您可以使用StreamReader自动检测任何BOM并选择适当的编码:

byte[] script;
string sql;

using (var reader = new StreamReader(new MemoryStream(script), true))
{                                   //                          ↑ 
    sql = reader.ReadToEnd();       //        detectEncodingFromByteOrderMarks
}