Converti in UCS2

Esiste qualche funzione in Vb.net (o C #) che codifica una stringa in UCS2?

Grazie

Utilizzare le seguenti funzioni per codificare la stringa unicode nel formato “UCS2”:

//================> 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; } 

per esempio:

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

No, .NET supporta l’intero intervallo Unicode per le stringhe e molte codifiche derivate da System.Text.Encoding . È ansible ottenere in modo semplice UTF-16 , ma non UCS-2. Tuttavia, se prima si eliminano tutte le coppie surrogate nella stringa di input, UTF-16 è UCS-2. Ma non esiste una codifica integrata che faccia questo per te.

Vedi Encoding.Unicode .

Data una String .NET, chiama Encoding.GetBytes per ottenere una matrice di byte che rappresenta quella stringa codificata in UCS2.

Modifica: nel contesto di System.Text.Encoding , Unicode = UTF-16. Come sottolinea Johannes, queste non sono la stessa cosa in presenza di surrogati.