2012-08-27 62 views
2

套接字目前我使用寫作UTF-8字符串中的Java

serverOutput = new DataOutputStream(socketCliente.getOutputStream()); 

然後

serverOutput.write(data.getBytes()); 

,直到我添加任何非標字符(例如N)它工作正常,然後添加儘可能多的字符,那麼從文件末尾切下的字符數量並不會到達。

完整的源代碼可以在這裏找到在PandroidAgentTentacle.java

http://pandora.svn.sourceforge.net/viewvc/pandora/trunk/pandora_agents/android/src/pandroid/agent/

+2

您是否試過指定字符集名稱? 'getBytes(String charsetName)'或'getBytes(Charset charset)'。您還必須在接收者一側指定字符集。發送一些數據結束標記也很方便(或者以一個長度爲前綴)。 – Neet

+0

我得到這個: - 字符串類型中的getBytes(String)方法不適用於參數 \t(Charset) – MarkHolland

回答

1

與使用DataOutputStream聯合好,這是你有封裝這一切都爲您的writeUTF方法。

+0

writeUTF添加一個物料清單,該物料打破了可以在另一端讀取的文件 – MarkHolland

+0

no。它不添加物料清單。它包括流的大小。另一端應該使用readUTF來獲取正確的內容。如果你不能使用它,你需要在每次從字符串切換到字節時明確指明UTF-8。 – njzk2

0

您是否嘗試過使用serverOutput.write(data.getBytes("UTF-8"));

+0

那麼,Android上的默認字符集是UTF-8,所以我不認爲這會改變任何東西。 –

+0

沒有什麼區別加上 – MarkHolland

+0

然後檢查服務器端,也許問題出在那裏,你必須讀取像'new String(text,「UTF-8」);'' –