我正在使用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/)」,其中的共識是「不,他們不應該」。 –