我的Android应用程序使用BroadcastReceiver
接收短信。然后它使用ObjectOutputStream
将其发送到我的服务器,该服务器使用cource ObjectInputStream
接收它。如果我在Android应用程序中打印消息并在LogCat中查看它,则会正确显示收到的消息。所有字符都正确显示。但是当它通过这些对象流发送时,它会被更改,并且不再正确显示。所有特殊字符都将替换为问号。
例如,我收到一条带有拇指向上图标的消息。我可以将其视为LogCat和Android文本消息软件中的图标,但我的服务器将其作为问号接收,并在MySQL数据库中保存为两个问号。
如何使用这些对象输出和输入流处理?
我不会将消息作为文本发送,而是作为对象发送。我有一个名为SMSMessage
的类,其中包含消息的所有信息。我使用socket发送了它。
答案 0 :(得分:0)
听起来像编码问题。如果无法在特定编码中表示字符,则通常将字符转换为问号或框(或框内的问号)。您可以通过在ISO-8859-15编码中创建包含字母“äöå”的文件并在文本编辑器中将其打开为UTF-8来查看此操作。
然而,就我记忆中而言,ObjectStreams不应该破坏编码。您可以尝试使用除ObjectStream之外的其他流(我假设Android不限于它们)并指定合适的编码(UTF-8,UTF-16)以查看它是否正确。