首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转换为UCS2

转换为UCS2
EN

Stack Overflow用户
提问于 2010-08-09 16:15:11
回答 4查看 14.6K关注 0票数 10

Vb.net (或C#)中有没有函数可以对UCS2中的字符串进行编码?

谢谢

EN

回答 4

Stack Overflow用户

发布于 2014-08-06 16:37:36

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

代码语言:javascript
复制
    //================> 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;
    }

例如:

代码语言:javascript
复制
String strE = SmsEngine.UnicodeStr2HexStr("سلام به گچپژ پارسي");
// strE = "0633064406270645002006280647002006AF0686067E06980020067E062706310633064A"
String strD = SmsEngine.HexStr2UnicodeStr("0633064406270645002006280647002006AF0686067E06980020067E062706310633064A");
// strD = "سلام به گچپژ پارسي"
票数 13
EN

Stack Overflow用户

发布于 2010-08-09 16:27:48

不支持,对于从System.Text.Encoding派生的字符串和许多编码,.NET支持完整的Unicode范围。您可以使用trivially get UTF-16命令,但不能使用UCS-2命令。但是,如果首先删除输入字符串中的所有代理项对,则UTF-16为UCS-2。但是没有内置的编码可以帮你做到这一点。

票数 7
EN

Stack Overflow用户

发布于 2010-08-09 16:18:28

参见Encoding.Unicode

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

UTF编辑:System.Text.Encoding上下文中的,Unicode =-16。正如约翰尼斯所指出的,在有代理人在场的情况下,这不是一回事。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3438340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档