【问题标题】:Unexpected character is displayed in the textbox文本框中显示意外字符
【发布时间】:2011-09-10 12:32:32
【问题描述】:

我有一个非常简单的 .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。有人可以确认吗?

【问题讨论】:

  • 如果你用\r\n而不是\n呢?
  • @Alex 你明白了。 \r\n 在 XP box 和 2008 上都没有任何问题。你知道发生了什么吗?他们都有.NET 3.5 SP1
  • 看看这个 SO question

标签: c# .net winforms


【解决方案1】:

Windows 中的标准行尾序列是\r\n。如果没有前面的回车符 (\r),文本框无法将 \n 识别为换行符。

【讨论】:

  • 知道了。我认为你是对的,我应该改用 \r\n 。听起来 Windows 2008 恰好能理解 \n 而 XP 却不能。谁能确认 Windows 2008 支持\n?
【解决方案2】:

一般来说,您应该使用Environment.NewLine 而不是\r\n。

解释一下:Environment.NewLine 将包含适用于运行应用程序的任何平台的正确转义字符序列。在 Windows 上,它是 \r\n,但 *nix(如果我没记错的话)使用 \n仅限。

【讨论】:

  • 谢谢,我同意你的观点,我也应该使用Environment.NewLine。我认为我提出这个问题的目的是找出为什么它们在 Windows 2008 和 Windows XP 中的行为不同,而不是让奇怪的字符消失。
猜你喜欢
  • 2012-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多