我正在使用ICQ协议,并发现特殊字母(fxp音调符号)的问题。我使用另一种编码(如果我记得CP-1251)阅读ICQ。特殊字符的ICQ编码
如何使用文本解码字符串以正确编码?
我试过使用UTF8Encoding类,但没有成功。
使用ICQ锐库。
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);
}
如果使用相同的客户端还是可以的,但如果不与变音符号传入和outcoming消息只是不可读接触。
我已经确定(使用此 - >https://stackoverflow.com/a/12853721/846232)它是BigEndianUnicode编码。但是如果字符串不包含变音符不可读的(中文字母)。但是,如果我使用UTF8编码的文本没有变音符号,那就OK了。但我不知道该怎么做,它会被编码为正确的。
等待,你是说,使用UTF-16,用变音符号的工作文字,但没有变音符号的文本不工作?难道它使用US-ASCII(如果它适合的话)(无符号)和UTF-16(如果它包含变音符号)?试图用UTF-16解码ASCII编码的文本,肯定会产生中文字符... – johv
我编辑过你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –