2011-06-08 43 views
4

我有一個非常簡單的.NET程序。這只是寫一個字符串到文本框。我的字符串末尾出現了一個奇怪的字符。意外的字符顯示在文本框中

enter image description here

這隻發生在我的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位有關。

UPDATE

感謝@DBM和@Andrew。奇怪的角色來自\ n,但與\ 0無關。現在,聽起來Windows 2008可以理解\ r \ n和\ n。任何人都可以證實嗎?

+0

如果您使用\ r \ n而不是\ n來做什麼? – 2011-06-08 01:12:24

+0

@Alex你明白了。 \ r \ n在XP和2008上都沒有問題。你知道發生了什麼嗎?他們都有.NET 3.5 SP1 – 2011-06-08 01:16:20

+0

看看這個[問題](http://stackoverflow.com/q/2581325/174682) – Zamboni 2011-06-08 01:17:28

回答

6

Windows中的標準結束行序列是\r\n。文本框不識別\n作爲沒有前面的回車符(\r)的換行符。

+0

明白了。我認爲你是對的,我應該用\ r \ n代替。這聽起來像Windows 2008恰好理解\ n,但XP不。任何人都可以確認Windows 2008支持\ n? – 2011-06-08 01:21:35

5

一般而言,您應該使用Environment.NewLine而不是\ r \ n。

解釋方式:Environment.NewLine將包含適用於運行應用程序的任何平臺的正確轉義字符序列。在Windows上,它是\ r \ n,但nix(如果我記得正確)使用\只有n。

+0

謝謝,我同意你應該使用'Environment.NewLine'。我認爲我的意圖是找出爲什麼他們在Windows 2008和Windows XP中表現不同,而不是讓這個奇怪的角色消失。 – 2011-06-08 01:25:56