2013-10-16 199 views
0

我的Android應用程序使用BroadcastReceiver接收短信。然後它使用ObjectOutputStream將其發送到我的服務器,該服務器使用的是cource,ObjectInputStream。如果我在Android應用程序中打印消息並在LogCat中查看它,收到的消息顯示正確。所有字符都正確顯示。但是,當它通過這些對象流發送時,它會被更改,並且不會再正確顯示。所有特殊字符都被替換爲問號。ObjectOutput和ObjectInputStream - 特殊字符

例如,我收到了一個帶有大拇指圖標的消息。我可以將它看作LogCat中和Android的短信軟件中的圖標,但我的服務器將它作爲問號接收,並在MySQL數據庫中保存爲兩個問號。

如何處理這些對象輸出和輸入流?

我不會將消息作爲文本發送,而是作爲對象發送。我有一個名爲SMSMessage的類,其中包含消息的所有信息。我使用套接字發送了這個消息。

+0

你是什麼意思的「特殊字符」? Ääkköset? – Kayaman

+0

我的意思是字符,例如我在帖子中用作示例的大拇指圖標。對不起,我會在這裏發佈它,但它看起來像一個廣場。 – MikkoP

回答

0

聽起來像是一個編碼問題。如果字符不能用特定的編碼表示,通常會將字符轉換爲問號或方框(或方框內的問號)。您可以通過創建一個包含ISO-8859-15編碼中的字母「äöå」的文件並在文本編輯器中將其打開爲UTF-8來看到這一點。

但是,據我所知,ObjectStreams不應該破壞這樣的編碼。您可以嘗試使用除ObjectStreams之外的其他流(我假定Android不限於它們)並指定合適的編碼(UTF-8,UTF-16)以查看它是否正確。