我有一个非常简单的.NET程序。只是在文本框中写一个字符串。我的字符串末尾出现了一个奇怪的角色。
这只发生在我的32位XP盒子上。同样的程序在另一台64位Windows 2008机器上运行良好。
程序就像这样简单。
private void Form1_Load(object sender, EventArgs e)
{
textBox1.Text = "Hello\n\0\0\0\0\0\0";
}
我知道在字符串的末尾添加\ 0很奇怪,我可以在应用到文本框之前修剪它们。文本框设置为允许多行。
出于好奇,有人知道问题的来源吗?两台机器都安装了.NET 3.5 SP1。它们都设置为具有相同的区域设置。我怀疑它是否与32位或64位有关。
更新
感谢@DBM和@Andrew。奇怪的角色来自\ n但与\ 0无关。现在,听起来Windows 2008可以理解\ r \ n和\ n。任何人都可以证实吗?
答案 0 :(得分:6)
Windows中的标准行尾序列为\r\n
。如果没有前面的回车符(\n
),则文本框无法将\r
识别为换行符。
答案 1 :(得分:5)
一般来说,您应该使用Environment.NewLine
而不是\ r \ n。
以解释的方式:Environment.NewLine将包含运行应用程序的任何平台的正确的转义字符序列。在Windows上,它是\ r \ n,但* nix(如果我没记错的话)使用\ n仅