gpt4 book ai didi

c# - BlockingSenderDestination.sendReceive() UTF-8 问题

转载 作者:行者123 更新时间:2023-12-01 15:56:11 25 4
gpt4 key购买 nike

在我的 Blackberry 应用程序中,我使用以下方法加载 JSON。

 private static Object loadJson(String uriStr){
Object _json = null;
Message response = null;
BlockingSenderDestination bsd = null;

try
{
bsd = (BlockingSenderDestination)
DestinationFactory.getSenderDestination
("CommAPISample", URI.create(uriStr));

if(bsd == null)
{
bsd =
DestinationFactory.createBlockingSenderDestination
(new Context("CommAPISample"),
URI.create(uriStr), new JSONMessageProcessor()
);
}
response = bsd.sendReceive();
_json = response.getObjectPayload();
}
catch(Exception e)
{
System.out.println(e.toString());
}
finally
{
if(bsd != null)
{
bsd.release();
}
}
return _json;
}

这工作正常。但问题是当我获取 JSON 时,阿拉伯字符显示为垃圾

(الرØϙŠØ³ التنÙ) .我已将此问题提交给 Blackberry 支持表单

Arabic shows corrupted in the JSON output

根据讨论,我将阿拉伯字符编码为\uxxxx 格式(在我的服务器端应用程序中)并且它正在工作。但现在我必须使用其他人提供的 JSON,而我无法更改服务器端代码。

他们正在使用 asp.net C# ,根据他们的说法,他们发送的数据如下所示。

 JsonResult result = new JsonResult();
result.ContentEncoding = System.Text.Encoding.UTF8;
result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
result.Data = “Data Object (Contains Arabic) comes here”
return result;

所以我的问题是,如果服务器按照上述方式提供数据,BlockingSenderDestination.sendReceive方法可以得到utf-8数据吗?或者它只期望非 ascii 的\uxxxx 编码数据。或者我必须做其他事情(比如向服务器发送一些 header ),以便我可以直接使用 utf-8 数据。

在 Debug模式下,我检查“响应”的值。它已经显示垃圾字符。

除了 JSON 之外,我还可以在其他地方处理阿拉伯语。

昨天我发布了这个issue in Blackberry form 。但到目前为止还没有回复。

我是黑莓和 Java 的新手。如果这是一个愚蠢的问题,我很抱歉。

提前致谢。

最佳答案

响应中的内容类型是什么?服务器是否在 HTTP header 中显式定义了 UTF-8 字符编码?例如:

内容类型:text/json;字符集=UTF-8

如果 API 忽略 HTTP 内容类型中的字符集,则执行字符串转换的更简单方法是确定接收到的消息是 ByteMessage 还是 StreamMessage。以字节数组形式检索消息,然后使用 UTF-8 编码转换为字符串

即:

Message msg = bsd.sendReceive();
byte[] msgBytes = null;

if (msg instanceof ByteMessage) {
msgBytes = ((ByteMessage) msg).getBytePayload();
}
else { /* StreamMessage */
// TODO read the bytes from the stream into a byte array
}
return new String(msgBytes,"UTF-8");

关于c# - BlockingSenderDestination.sendReceive() UTF-8 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5000019/

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