Spen D
Spen D

Reputation: 4345

String to Unicode in C#

I want to use Unicode in my code. My Unicode value is 0100 and I am adding my Unicode string \u with my value. When I use string myVal="\u0100", it's working, but when I use like below, it's not working. The value is looking like "\\u1000";. How do I resolve this?

I want to use it like the below one, because the Unicode value may vary sometimes.

string uStr=@"\u" + "0100";

Upvotes: 0

Views: 2668

Answers (1)

ckramer
ckramer

Reputation: 9443

There are a couple of problems here. One is that @"\u" is actually the literal string "\u" (can also be represented as "\u").

The other issue is that you cannot construct a string in the way you describe because "\u" is not a valid string by itself. The compiler is expecting a value to follow "\u" (like "\u0100") to determine what the encoded value is supposed to be.

You need to keep in mind that strings in .NET are immutable, which means that when you look at what is going on behind the scenes with your concatenated example (`@"\u"+"0100"), this is what is actually happening:

  1. Create the string "\u"
  2. Create the string "0100"
  3. Create the string "\u0100"

So you have three strings in memory. In order for that to happen all of the strings must be valid.

The first option that comes to mind for handling those values is to actually parse them as integers, and then convert them to characters. Something like:

var unicodeValue = (char)int.Parse("0100",System.Globalization.NumberStyles.AllowHexSpecifier);

Which will give you the single Unicode character value. From there, you can add it to a string, or convert it to a string using ToString().

Upvotes: 3

Related Questions