gpt4 book ai didi

java - GSON 不发送 UTF-8

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:31:09 32 4
gpt4 key购买 nike

以下方法发送 JSON 回复。但是在接收端,我不断收到无效字符,并且 UTF-8 没有解码数据。我做错了什么?

响应客户端=数据输出流

//Get the client request
clientRequest = new BufferedReader(new InputStreamReader(connectedClient.getInputStream())); //connectedclient = socket

//Start response object
responseToClient = new DataOutputStream(connectedClient.getOutputStream());


/**
* Sends a JSON response for an object
* @param objectToEncode
* @throws Exception
*/
private void sendJSONResponse(Object objectToEncode) throws Exception{

//Encode object into JSON
String jsonString = new Gson().toJson(objectToEncode);

// HTTP Header... Status code, last modified
responseToClient.writeBytes(HTTP_OK_STATUS_CODE);
responseToClient.writeBytes(CONTENT_TYPE_JSON);
responseToClient.writeBytes("Last-modified: "+ HelperMethods.now() +" \r\n");
responseToClient.writeBytes("\r\n");

// The HTTP content starts here
responseToClient.writeBytes(jsonString);

}

最佳答案

我不知道您为什么要编写自己的 HTTP 协议(protocol)代码。这很像编写您自己的 XML 解析器:无论您是多么优秀的程序员,您都一定会出错。

无论如何,作为DataOutputStream文档指出,对字符串执行 writeBytes 只会丢弃其高八位。所以你得到的是......一些东西,但不是UTF8。你应该做的是:

String jsonString = new Gson().toJson(objectToEncode);
byte[] utf8JsonString = jsonString.getBytes("UTF8");
responseToClient.write(utf8JsonString, 0, utf8JsonString.Length);

关于java - GSON 不发送 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17078207/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com