首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >特殊字符的ICQ编码

特殊字符的ICQ编码
EN

Stack Overflow用户
提问于 2012-10-26 08:24:29
回答 1查看 520关注 0票数 0

我正在使用ICQ协议,我发现特殊字母(fxp变音)有问题。我使用另一种编码(如果我记得的话是CP-1251)读取该ICQ。

如何解码包含文本的字符串以更正编码?

我尝试过使用UTF8Encoding类,但没有成功。

使用ICQ-sharp库。

代码语言:javascript
复制
    private void ParseMessage (string uin, byte[] data)
    {
        ushort capabilities_length = LittleEndianBitConverter.Big.ToUInt16 (data, 2);
        ushort msg_tlv_length = LittleEndianBitConverter.Big.ToUInt16 (data, 6 + capabilities_length);
        string message = Encoding.UTF8.GetString (data, 12 + capabilities_length, msg_tlv_length - 4);

        Debug.WriteLine(message);
    }

如果联系使用相同的客户端,这是可以的,但如果不是,传入和传出的带有变音符号的消息是不可读的。

我已经确定(使用这个-> https://stackoverflow.com/a/12853721/846232)它是BigEndianUnicode编码的。但如果字符串不包含变音符号,则其不可读(中文字母)。但是,如果我在不带变音符号的文本上使用UTF8编码,这是可以的。但我不知道该怎么做,它会一直被正确地编码。

EN

回答 1

Stack Overflow用户

发布于 2012-10-28 04:09:51

如果UTF-8可以工作(例如,它可以处理"english“或任何US-ASCII字符),那么您就没有UTF-16。Latin1 (或Windows1252,微软的变体),或例如Windows1251或Windows1250是完全可能的,因为它们的第一部分包含没有变音符号的拉丁字母是相同的。

像这样解码:

代码语言:javascript
复制
var encoding = Encoding.GetEncoding("Windows-1250");
string message = encoding.GetString(data, 12 + capabilities_length, msg_tlv_length - 4);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13079223

复制
相关文章

相似问题

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