gpt4 book ai didi

java - 在 Java 中将 ISO-8859-1 编码字符串转出/转入 JSON

转载 作者:行者123 更新时间:2023-12-01 04:59:19 25 4
gpt4 key购买 nike

我的应用程序有一个 Java servlet,它从请求中读取 JSONObject 并构造一些在其他地方使用的 Java 对象。我遇到了一个问题,因为 JSON 中的字符串是用 ISO-8859-1 编码的。当我将它们提取到 Java 字符串中时,编码似乎被解释为 UTF-16。我需要能够在某个时刻取回正确编码的字符串以放入另一个 JSON 对象中。

我尝试过使用 ByteBuffers 和 CharBuffers,但后来我根本没有得到任何字符。我无法更改编码,因为我必须与使用 ISO-8859-1 的其他应用程序很好地配合。

任何提示将不胜感激。

这是一个使用 Struts 1.3.8 的遗留应用程序。我对 JSONObject 和 JSONArray 使用 net.sf.json 2.2.4。

解析代码片段是:

final JSONObject a = (JSONObject) i;
final JSONObject attr = a.getJSONObject("attribute");
final String category = attr.getString("category");

final String value = attr.getString("value");

然后,我使用该信息创建 POJO,这些信息由另一个操作类检索,以创建 JSON 以传递给客户端进行显示,或传递给其他应用程序。

所以澄清一下,如果 JSON 包含字符串“Juan Guzmán”,则 Java 字符串包含类似 Juan Guzm?_An 的内容(我面前没有确切的字符串)。我不知道如何恢复正确的变音符号。我相信,如果我可以获得包含正确表示形式的 Java 字符串,下面的 Mezzie 解决方案将允许我创建具有正确编码的字符串,并将其放回 JSON 中以供返回。

最佳答案

我遇到了同样的问题,并且我使用的技术与您相同。在我们的例子中,它是 UTF 8。所以只需将其更改为 UTF-16

    public static String UTF8toISO( String str )
{
try
{
return new String( str.getBytes( "ISO-8859-1" ), "UTF-8" );
}
catch ( UnsupportedEncodingException e )
{
e.printStackTrace();
}
return str;
}

关于java - 在 Java 中将 ISO-8859-1 编码字符串转出/转入 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13593157/

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