我有一个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字符串?我在我的数据库中使用charset 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???"}
答案 0 :(得分:0)
byte[] b = message.getBytes("UTF-8");
writer.write(b.toString());
如果这是你要求的代码,那就没意义了。它当然应该是
writer.write(message);
目前您正在发送[B@NNNNNNNNNNN
形式的内容,这是字节数组的哈希码。
答案 1 :(得分:0)
我找到了一个解决方案,谢谢@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);