C#' \ n'以不同于预期的字节保存

时间:2016-12-20 10:29:59

标签: c# string

如果我将此字符串保存到文本文件中;

  

你好,这是一个测试信息

\ n字符保存为HEX [5C 6E]我希望将其保存为[0A]。

我认为这是一个编码问题?

我正在使用;

// 1252 is a variable in the application
Encoding codePage = Encoding.GetEncoding("1252");
Byte[] bytes = new UTF8Encoding(true).GetBytes("Hello this \\n is a test message");
Byte[] encodedBytes = Encoding.Convert(Encoding.UTF8, codePage , bytes);

所有这些都在FileStream范围内,并使用fs.Write将encodedBytes写入文件。

我曾尝试使用\ r \ n但结果相同。

有什么建议吗?

谢谢!

修改

正在从tsv文件中读取字符串并将其放入字符串数组中。正在读取的字符串包含" \ n"在它。

要读取字符串,我使用StreamReader reader并在\ t

处拆分

1 个答案:

答案 0 :(得分:10)

在执行时,您的字符串包含一个反斜杠字符,后跟一个n。它们的编码完全符合。如果你真的想要一个换行符,你不应该在代码中转义反斜杠:

Byte[] bytes = new UTF8Encoding(true).GetBytes("Hello this \n is a test message");

该字符串文字使用\n来表示换行符U + 000A。在执行时,字符串不会包含反斜杠或n - 包含换行符。

但是,你的代码已经很奇怪,如果你想获得字符串的编码形式,没有理由通过UTF-8:

byte encodedBytes = codePage.GetBytes("Hello this \n is a test message");