[英]Android - Send and receive byte
我有一個 tcp 連接,我嘗試以字節為單位發送和接收消息,但我不知道它是如何工作的。
這是我要發送的代碼:
public void write(String message) {
try {
byte[] b = message.getBytes("UTF-8");
writer.write(b.toString());
writer.newLine();
writer.flush();
} catch (IOException e) {
Log.e(MainActivity.TAG, "exception", e);
e.printStackTrace();
} catch (Exception e) {
Log.e(MainActivity.TAG, "exception", e);
e.printStackTrace();
}
}
這是為了接收
String message = client.reader.readLine();
JSONObject json = new JSONObject(message);
我再試試 :)
如何將接收到的字節數組轉換為 mysql 數據庫的具有完整 unicode 的字符串? 我的數據庫使用字符集 Utf8m4。
這是我的代碼
byte[] message = System.Text.Encoding.UTF8.GetBytes(client.reader.ReadLine()); // client.reader.ReadLine() is already a byte[]
string encoded = System.Text.Encoding.UTF8.GetString(message);
JToken token = JObject.Parse(encoded);
我的代碼不起作用。 我得到:
{"Id":"Test","Content":"hey???"}
byte[] b = message.getBytes("UTF-8");
writer.write(b.toString());
如果這是您要問的代碼,那是毫無意義的。 當然應該是
writer.write(message);
目前,您正在發送[B@NNNNNNNNNNN
形式的內容,它是字節數組的哈希碼。
我找到了解決方案,感謝@EJP。
在 Java(客戶端)中
writer.write(B64.encode(message)); // message is a string
在 C# 中(服務器端)
string encoded = System.Text.Encoding.UTF8.GetString(message);
JToken token = JObject.Parse(encoded);
為了將字節保存在數據庫中,我使用 blob 作為類型。
Encoding.UTF8.GetBytes(bluuub)
從數據庫中獲取字節
byte[] b = (byte[])reader.GetValue(0);
string bluuub = Encoding.UTF8.GetString(b);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.