C#和ASP.NET中的换行符变化是什么? (\ r \ n vs. \ n)

我从一开始就一直在为ASP.NET编写代码,今天我遇到了一些我以前从未见过的东西。 通常我会在C#中查找换行符(例如,当从textarea发布在ASP.NET中时)期望“\ r \ n”。 现在我正在使用MVC框架,来自textarea的线路上的文本只有“\ n”用于换行符。

在旧学校TextBox控件中是否有一些事情可以规范换行符? 由于MVC只是按原样使用表单数据,这是正常的吗? 很想得到一些见解。

我观察到实际的换行顺序因浏览器而异。

如果页面上有多行textarea并且页面已提交,则:

IE返回“\ r \ n”以表示换行符。 在这种情况下,FF返回“\ n”。

我在2006年底的某个地方进行了测试,所以现在可能会有所不同。

我不相信它可能与WebForms与MVC有任何关系。 两者都只处理提交的输入并按原样返回给您。

如果你想以某种方式处理和替换这些字符,那么按照从长到短的顺序进行处理是有意义的:

string userText = form["Text"]; userText = userText.Replace ("\r\n", "
").Replace ("\r", "
");

\ n是* nix风格系统上的行结尾变体。 \ r \ n是特定于Windows的行结束行为。

如果您正在检查行结尾并将接口暴露给非Windows环境,请务必不仅要检查\ r \ n,还要检查单独的\ n。

更多背景知识,请查看维基百科上的Newline文章。

我正在使用Environment.NewLine :

 string userText = form["Text"]; userText = userText.Replace (Environment.NewLine, "
")

另外看一下@Haacked关于一些新线textarea怪癖的post。