What is this char? 65279 ''

C#Char

C# Problem Overview


I have two strings.

one is """

and the other is """

I think that they are same.

However, String.Compare says they are different.

This is very strange.

Here's my code:

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");
}

I expected that it may print "GoodCB".

However, it only prints "B".

In my debugger, c[0] is 65279 '' and c[1] is 34 '"'. and b[0] is '"'.

But I don't know what 65279 '' is.

Is it an empty character?

C# Solutions


Solution 1 - C#

It's a zero-width no-break space.
It's more commonly used as a byte-order mark (BOM).

Solution 2 - C#

If you are using Notepad++, try converting to UTF-8 (no BOM), and also make sure ALL your files in the project are the same file system format.

Solution 3 - C#

If you are reading from a file you have opened in notepad, it may have added it as it is one of several programs notorious for doing so.

Solution 4 - C#

You can remove it with:

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Question장선민View Question on Stackoverflow
Solution 1 - C#SLaksView Answer on Stackoverflow
Solution 2 - C#kurdtpageView Answer on Stackoverflow
Solution 3 - C#Dan WitkowskiView Answer on Stackoverflow
Solution 4 - C#VictorView Answer on Stackoverflow