Java Android编码传入IRC套接字

Java Android编码传入IRC套接字,java,android,sockets,encoding,irc,Java,Android,Sockets,Encoding,Irc,我目前正在为Android开发一个IRC应用程序,我注意到当一些人编写一些字符时,比如åæäøö会显示为unicode替换符号(�), 情况并非总是如此,但只有在一些人写作时才会如此 我测试过的所有安卓IRC客户端似乎都面临着同样的困境,但我的计算机上的irssi和Linkinus似乎处理得很好,它们显示为正确的字符。我猜irssi和这些客户端不知怎么知道接收到的消息的编码,并在显示之前转换它,我想这样做我的应用程序中也有类似的东西,但我不知道怎么做 编辑:字符似乎出于某种原因被65533替换�

我目前正在为Android开发一个IRC应用程序,我注意到当一些人编写一些字符时,比如åæäøö会显示为unicode替换符号(�), 情况并非总是如此,但只有在一些人写作时才会如此

我测试过的所有安卓IRC客户端似乎都面临着同样的困境,但我的计算机上的irssi和Linkinus似乎处理得很好,它们显示为正确的字符。我猜irssi和这些客户端不知怎么知道接收到的消息的编码,并在显示之前转换它,我想这样做我的应用程序中也有类似的东西,但我不知道怎么做


编辑:字符似乎出于某种原因被65533替换� 当我从缓冲读取器中读取时直接进行。我应该如何处理此问题?

听起来像是使用utf-8解码,但他们使用iso8859发送。通常的方法是尝试使用utf-8解码,然后使用回退编码。在您的情况下,检查unicode替换标志符,如果存在,回退到其他编码。如何检查unicode替换标志符输入流中的代码替换图示符?
mark()
reset()
在底层BufferedStream上。似乎BufferedStream直接用char 65533替换了不正确的字符,因此我无法修复编码错误。BufferedStream在
字节
上工作,而不是在
字符
上工作。我不知道androids
字节
如何表示大于255的值,我一直认为字节只有8位,因此对于BufferedStream,不可能用65533替换某些内容。注意:BufferedStream!=BufferedReader。