c# - 通过 StringBuilder 为字符串添加字节顺序标记

标签 c# utf-8 stringbuilder byte-order-mark

如何向 StringBuilder 添加字节顺序标记? (我必须将一个字符串传递给另一个方法,该方法会将其保存为文件,但我无法修改该方法)。

我试过这个:

var sb = new StringBuilder();
sb.Append('\xEF');
sb.Append('\xBB');
sb.Append('\xBF');

但是当我用十六进制编辑器查看它时,它添加了以下序列: C3 AF C2 BB C2 BF

字符串很大,所以最好不要来回转换为字节数组。

编辑: 在评论中提出问题后进行澄清。我必须将字符串传递给另一个方法,该方法接受一个字符串并在 Azure Blob 存储上创建一个文件。我无法修改其他方法。

最佳答案

两种选择:

  1. 根本不要在您的文本中包含字节顺序标记...而是使用一种会自动包含它的编码
  2. 将它作为一个字符包含在您的 StringBuilder 中:

    sb.Append('\uFEFF'); // U+FEFF is the byte-order mark character
    

就我个人而言,我通常会选择第一种方法,但“我无法修改该方法”表明它可能不适合您的情况。

关于c# - 通过 StringBuilder 为字符串添加字节顺序标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22306645/

相关文章:

c# - 从静态方法获取访问权限

c# - 枚举集合被修改抵抗

c# - 如何在 MonoTouch 的 UITableView 中重新加载数据?

javascript - 无法用 RegExp 替换 UTF-8 字符

python - 如何在 Python 中正确比较来自 psycopg2 的 unicode 字符串?

c# - 在 C# 中使用 REST API 将附件发布到 Jira

php - utf8_(en|de)code 从 php7 中删除?

asp.net - 使用 HtmlTextWriter 呈现服务器控件?

c# - 将 Null 附加到 `StringBuilder`

c# - 在 stringbuilder 中搜索字符串并替换整行 C#