如何将一个字符串转换为带有Unix换行符的字节流?

3
如果我使用以下代码将字符串转换为字节:

如果我使用以下代码将字符串转换为字节:

byte[] ascii = new System.Text.ASCIIEncoding().GetBytes(myString);

我收到的字节使用Windows换行符。如何将其转换为Unix换行符?

2个回答

10

行尾与编码无关。如果您想将Windows的行尾转换为Unix的行尾,请在字符串本身中进行:

myString = myString.Replace("\r\n", "\n");

个人而言,我尽可能避免使用ASCII码。顺便问一下,您确定它永远不需要任何重音字符吗?如果可以选择,我通常使用UTF-8:

myString = myString.Replace("\r\n", "\n");
byte[] bytes = Encoding.UTF8.GetBytes(myString);

如果您要向某个流写入内容,另一种选择是使用 StreamWriterFile.CreateText 等工具。在此,您只需一次指定编码方式,而无需直接处理原始字节。


在编程中,使用UTF8而不是Ascii更好。然而,使用Environment.NewLine代替"\r\n"会更好。 - Richard Schneider
3
@Richard:为什么?问题是如何将Windows的行终止符转换为Unix的行终止符…而不是将“我系统当前的行终止符”转换为Unix的行终止符。我的答案是完全符合问题的代码。例如,如果它正在Mono上运行,并且正在加载在Windows中生成的文件,那么怎么办? - Jon Skeet

2
string myString = @"line 1
line 2";
byte[] ascii = new System.Text.ASCIIEncoding().GetBytes(myString.Replace(Environment.NewLine, "\n"));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接