私は ICQ プロトコルを使用していますが、特殊文字 (fxp 発音記号) に問題があることがわかりました。私は別のエンコーディングを使用してそのICQを読みました(覚えていればCP-1251)。
文字列をテキストでデコードしてエンコードを修正するにはどうすればよいですか?
UTF8Encoding クラスを使用してみましたが、成功しませんでした。
ICQ-sharp ライブラリの使用。
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 エンコーディングを使用すると、問題ありません。しかし、それが常に正しくエンコードされる方法がわかりません。