【问题标题】:StreamWriter encoding string incorrectlyStreamWriter 编码字符串不正确
【发布时间】:2015-03-10 16:23:22
【问题描述】:

我正在尝试将 base64 字符串附加到现有文件。这是我的代码:

StreamWriter output = new StreamWriter(file, true, Encoding.ASCII);
output.WriteLine(output.NewLine + str);

这里file是文件路径。

由于某种原因,有一个特定的文件(一个 .cs 文件,如果重要的话),其中附加的实际文本是一串中文字符。它适用于我测试过的所有其他文件。

【问题讨论】:

  • 您尝试打印的字符串中是否包含任何非 ASCII 字符?也就是说,任何十进制值> 127的字符?例如,它是否有 Unicode 字节顺序标记 (en.wikipedia.org/wiki/Byte_order_mark)?
  • 在这种情况下str 是什么?您是否可能在不截断的情况下覆盖现有文件,而数据只是已经存在的数据?
  • 几乎可以肯定,您使用错误的 (ASCII) 编码损坏了文件。验证文件不是 UTF-8(或其他编码)。
  • 你已经创建了一个 ASCII 编码的 StreamWriter,但是你的汉字不是 ASCII 编码的一部分。您可能想尝试 Unicode 编码,或者,通过更改文件的编码不破坏文件可能更安全。如果它不是以 ASCII 编码的文件开头怎么办?编码可以通过 BOM 保存到文件中,BOM 是用于确定文件本身的字节顺序和编码的标志。
  • 如果原始文件包含 utf-16 BOM,则会发生这种情况。在 Windows 机器上并不少见。

标签: c# string file-io character-encoding streamwriter


【解决方案1】:

根据 cmets 中的多个建议,我将 Encoding.ASCII 替换为文件的编码,我使用 2Toad 的答案 here 进行查找。这样就解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-26
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多