Vb.net (或C#)中有没有函数可以对UCS2中的字符串进行编码?
谢谢
发布于 2014-08-06 16:37:36
使用以下函数对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 = "سلام به گچپژ پارسي"发布于 2010-08-09 16:27:48
不支持,对于从System.Text.Encoding派生的字符串和许多编码,.NET支持完整的Unicode范围。您可以使用trivially get UTF-16命令,但不能使用UCS-2命令。但是,如果首先删除输入字符串中的所有代理项对,则UTF-16为UCS-2。但是没有内置的编码可以帮你做到这一点。
发布于 2010-08-09 16:18:28
参见Encoding.Unicode。
给定一个.NET String,调用Encoding.GetBytes以获取一个字节数组,该数组表示以UCS2编码的字符串。
UTF编辑:System.Text.Encoding上下文中的,Unicode =-16。正如约翰尼斯所指出的,在有代理人在场的情况下,这不是一回事。
https://stackoverflow.com/questions/3438340
复制相似问题