Как преобразовать строку в байты с окончанием строки Unix? - PullRequest
3 голосов
/ 14 февраля 2011

Если я преобразую строку в байты, используя:

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

Тогда байты, которые я получаю, используют окончания строки Windows.Как я могу преобразовать это, используя окончания строки Unix?

Ответы [ 2 ]

9 голосов
/ 14 февраля 2011

Окончания строк не зависят от кодировки. Если вы хотите преобразовать окончания строк Windows в окончания строк Unix, сделайте это в самой строке:

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

Лично я избегаю использовать ASCII везде, где это возможно, кстати - вы абсолютно уверены, что ему никогда не понадобятся символы с акцентом? Если у меня есть выбор, я обычно использую UTF-8:

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

Если вы записываете в поток где-то, любой альтернативой является использование StreamWriter, или File.CreateText и т. Д. Затем вы задаете кодировку один раз, но вам не нужно самостоятельно обрабатывать необработанные байты.

2 голосов
/ 14 февраля 2011
string myString = @"line 1
line 2";
byte[] ascii = new System.Text.ASCIIEncoding().GetBytes(myString.Replace(Environment.NewLine, "\n"));
...