我的应用程序有一个 Java servlet,它从请求中读取一个 JSONObject 并构造一些在其他地方使用的 Java 对象。我遇到了一个问题,因为 JSON 中有以 ISO-8859-1 编码的字符串。当我将它们提取到 Java 字符串中时,编码似乎被解释为 UTF-16。我需要能够在某个时候取回正确编码的字符串以放入另一个 JSON 对象。
我尝试过使用 ByteBuffers 和 CharBuffers,但我根本没有得到任何字符。我无法更改编码,因为我必须与使用 ISO-8859-1 的其他应用程序很好地配合使用。
任何提示将非常感谢。
这是一个使用 Struts 1.3.8 的遗留应用程序。我将 net.sf.json 2.2.4 用于 JSONObject 和 JSONArray。
解析代码的片段是:
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 中以返回。