views:

60

answers:

2
+1  Q: 

Convert to UCS2

Dear all,

Is there any function in Vb.net (or C#) that encodes a string in UCS2?

Thanks

+1  A: 

See Encoding.Unicode.

Given a .NET String, call Encoding.GetBytes to get a byte array representing that string encoded in UCS2.

Edit: In the context of System.Text.Encoding, Unicode = UTF-16. As Johannes points out, these are not the same thing in the presence of surrogates.

Tim Robinson
Nope; that's UTF-16.
Joey
+1  A: 

No, .NET supports the full Unicode range for strings and many encodings that derive from System.Text.Encoding. You can trivially get UTF-16, but not UCS-2. However, if you first get rid of all surrogate pairs in the input string, then UTF-16 is UCS-2. But there's no built-in encoding that does that for you.

Joey
How likely is it he'll ever come across any characters out of the first plane, though? Or fonts to display them?
Rup
Rup: Without knowing context that's hard to tell. Many of my Word documents have large amounts of Plane 1 characters (remember: the math Latin alphabets are there), albeit the other astral planes are somewhat rare, indeed. In any case, if they specifically ask for UCS-2 I'd assume they know the difference to UTF-16 and also know why they need UCS-2. In the end it's not for us to speculate whether or whether not comething else would be right here :-)
Joey