转换为UCS2

Vb.net(或C#)中是否有任何函数可以编码UCS2中的字符串?

谢谢

使用以下函数以“UCS2”格式对unicode字符串进行编码:

//================> Used to encoding GSM message as UCS2 public static String UnicodeStr2HexStr(String strMessage) { byte[] ba = Encoding.BigEndianUnicode.GetBytes(strMessage); String strHex = BitConverter.ToString(ba); strHex = strHex.Replace("-", ""); return strHex; } public static String HexStr2UnicodeStr(String strHex) { byte[] ba = HexStr2HexBytes(strHex); return HexBytes2UnicodeStr(ba); } //================> Used to decoding GSM UCS2 message public static String HexBytes2UnicodeStr(byte[] ba) { var strMessage = Encoding.BigEndianUnicode.GetString(ba, 0, ba.Length); return strMessage; } public static byte[] HexStr2HexBytes(String strHex) { strHex = strHex.Replace(" ", ""); int nNumberChars = strHex.Length / 2; byte[] aBytes = new byte[nNumberChars]; using (var sr = new StringReader(strHex)) { for (int i = 0; i < nNumberChars; i++) aBytes[i] = Convert.ToByte(new String(new char[2] { (char)sr.Read(), (char)sr.Read() }), 16); } return aBytes; } 

例如:

 String strE = SmsEngine.UnicodeStr2HexStr("سلام به گچپژ پارسي"); // strE = "0633064406270645002006280647002006AF0686067E06980020067E062706310633064A" String strD = SmsEngine.HexStr2UnicodeStr("0633064406270645002006280647002006AF0686067E06980020067E062706310633064A"); // strD = "سلام به گچپژ پارسي" 

不,.NET支持字符串的完整Unicode范围和从System.Text.Encoding派生的许多编码。 你可以轻而易举地获得UTF-16 ,但不能获得UCS-2。 但是,如果您首先删除输入字符串中的所有代理项对,则UTF-16 UCS-2。 但是没有内置的编码可以帮助你。

请参阅Encoding.Unicode

给定.NET String ,调用Encoding.GetBytes以获取表示在UCS2中编码的字符串的字节数组。

编辑:System.Text.Encoding的上下文中,Unicode = UTF-16。 正如约翰内斯指出的那样,这些在代理人面前并不是一回事。