【问题标题】:What is this char? 65279 ''这是什么字符? 65279 ''
【发布时间】:2011-10-10 17:14:43
【问题描述】:

我有两个字符串。

一个是"\""

另一个是"\""

我认为他们是一样的。

但是,String.Compare 说它们是不同的。

这很奇怪。

这是我的代码:

string b = "\"";
string c = "\"";

if (string.Compare(b, c) == 0)
{
    Console.WriteLine("Good");
}

if (c.StartsWith("\""))
{
    Console.WriteLine("C");
}

if (b.StartsWith("\""))
{
    Console.WriteLine("B");
}

我预计它可能会打印“GoodCB”。

但是,它只打印“B”。

在我的调试器中,c[0] 是 65279 '',c[1] 是 34 '"'。b[0] 是 '"'。

但我不知道 65279 '' 是什么。

它是一个空字符吗?

【问题讨论】:

  • 你的字符串是从哪里来的?你可能读错了。
  • 它通常作为 utf-16 编码文本文件中的第一个字符出现。使用 StreamReader,而不是 FileStream。

标签: c# char


【解决方案1】:

您可以使用以下方法将其删除:

Trim(new char[]{'\uFEFF','\u200B'});

【讨论】:

    【解决方案2】:

    如果您使用的是 Notepad++,请尝试转换为 UTF-8(无 BOM),并确保项目中的所有文件都是相同的文件系统格式。

    【讨论】:

      【解决方案3】:

      如果您正在读取您在记事本中打开的文件,它可能已经添加了它,因为它是几个臭名昭著的程序之一。

      【讨论】:

      • 当我不确定它是否以 '' 开头时,如何删除该字符。
      • 记事本和其他程序正在保存 UTF8 文件,这是一种有效且常见的格式。仅当您读取编码错误的文件时,BOM 才会打扰您。
      • 我想使用 c[0] == '' 来确定 '' 是否存在,但我无法构建它。
      【解决方案4】:

      【讨论】:

      • 当我不确定它是否以 '' 开头时,如何删除该字符?
      • 非常感谢!在找到您的解决方案之前,我一直在碰壁!
      猜你喜欢
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 2016-11-26
      相关资源
      最近更新 更多