gpt4 book ai didi

java - Jersey REST 字符编码

转载 作者:行者123 更新时间:2023-12-01 14:21:31 26 4
gpt4 key购买 nike

我在使用 gson 进行字符编码时遇到一些问题。我有一个发送以下 JSON 响应的 Web 服务:

{
"version": "v2",
"result": {
"class": "SearchSizeBean",
"result_list": [
{
"id": 0,
"name": "Bitte w\u00c3\u00a4hlen"
},
{
"id": "21",
"name": "176"
}
]
}
}

我使用以下代码请求网络服务:

ClientResponse response = webResource.path(version)
.path(path)
.accept(MediaType.APPLICATION_JSON)
.method(method.name(), ClientResponse.class, paramMap);

if (response.getStatus() == 200)
{
responseBody = response.getEntity(String.class);
...
}

当检查responseBody时,结果字符串显示的结果与上面提到的JSON完全相同。但是使用GSon将JSON字符串转换为Object后,字符转换错误:

用GSON解析:

Gson gson = new GsonBuilder().disableHtmlEscaping()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.registerTypeAdapter(Transferable.class, new TransferableDeserializer())
.setDateFormat("yyyy-MM-dd HH:mm:ss")
.create();

RestResponse responseDTO = gson.fromJson(responseBody, RestResponse.class);

结果内容:

Response: SearchSizeBean[
resultList={
PosSize [id=0, name=Bitte wählen],
PosSize [id=21, name=176]
}
]

更新:

我复制了错误的 JSON 内容。我已编辑 JSON 以显示正确的 JSON 字符串。数据以 unicode w\u00c3\u00a4 形式发送。当我检查 GSon 转换后的响应时,它变成了十六进制:C3 82 C2 A4

最佳答案

问题出在服务器端 php 代码上。我有一个脚本,它已经以 UTF-8 编码。我用 php 函数 utf8_encode() 编码了字符串“Bitte wählen”,这导致了我的问题。

谢谢麦克道尔,你的提示让我走上了正轨!

解决方案是使用该函数并仅发送字符串“Bitte wählen”。

关于java - Jersey REST 字符编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17513344/

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