在Java中(用于Android),下面是代码行:

org.json.JSONObject array = new org.json.JSONObject("{"value":"aész"");

System.out.println("RES:" + array.toString());

我想要的输出:

RES: {"value":"a\u00e9sz"}

实际上是:

RES: {"value":"aész"}

如何使JSONObject toString()方法返回以UTF-8特殊字符(如json_encode(array("value","aész"));)的unicode值编码的JSON字符串

提前致谢。

您能否谈谈为什么要以这种方式对输出进行编码? 两者都是符合RFC 7159的有效JSON,含义相同,并且应以相同的方式解码。

这是因为我使用的第三方API Im不支持非英语字符,因此如果将其编码,则可以在以后获取字符。

听起来更像jar问题。 JsonObject是跨各种开源库使用的类。下载此jar json-rpc-1.0.jar

尝试这个:

JSONObject json = new JSONObject();

json.put("value","aész");

System.out.println(json.toString());

产生:

{"Name":"u00e9sz"}

但是请看,我希望结果不会出现在特殊字符中。 我不希望结果是:asz,我实际上希望它是:" a u00e9sz"

编辑答案,尝试那个罐子。 @格雷戈

结果应该是{"Name":"a\u00e9sz"}吗?

如果希望它转义所有非ASCII字符,则需要构建自己的org.json.JSONObject类版本。

您需要修改的方法的签名是

public static Writer quote(String string, Writer w) throws IOException

它在JSONObject.java中声明。这是负责格式化产生的json字符串中所有字符串值的方法。它遍历源字符串的所有字符并发出相应的输出字符。

您要查找的内容位于switch语句的"默认"部分。

原始代码(至少在我现在正在查看的源代码中)如下所示:

default:

if (c < ' ' || (c >= '\u0080' && c < '\u00a0')

|| (c >= '\u2000' && c < '\u2100')) {

w.write("\\u");

hhhh = Integer.toHexString(c);

w.write("0000", 0, 4 - hhhh.length());

w.write(hhhh);

} else {

w.write(c);

}

您需要更改" if"测试以匹配要转义的所有字符。

这就是你想要的:

default:

if (c < ' ' || c >= '\u0080') {

w.write("\\u");

hhhh = Integer.toHexString(c);

w.write("0000", 0, 4 - hhhh.length());

w.write(hhhh);

} else {

w.write(c);

}

希望这可以帮助。

P.S:我遇到了您的问题,因为遇到了同样的问题:我生成的json字符串需要通过一个仅接受ascii字符并处理任何大于127的字符的系统传输。

我想您想要的是ISO-8859-1编码。这是一个很好的答案:

在Java中将UTF-8转换为ISO-8859-1-如何使其保持为单字节

嗯,也许我不明白如何在JSON字符串中实现,我举了一个很小的例子,您能否尝试用我给出的例子来展示?

java json utf-8_关于java:如何使JSONObject的toString()像UTF-8字符一样将UTF-8字符编码为unicode?...相关推荐

  1. java 升级1.8_升级java到1.8.0_111

    这个wget的URL如何获取呢? wget "http://javadl.oracle.com/webapps/download/AutoDL?BundleId=216424" - ...

  2. java 编码格式 utf 8_关于java生成UTF-8编码格式文件的诡异问题

    如果一个字节,以10开始,表示它不是首字节,需要向前查找才能得到当前字符的首字节. 可见UTF-8可以有效地保证数据的完整性,避免出现编码的错位.即使偶然出现"坏字",也不会影响到 ...

  3. java json 压缩,如何在Java中压缩JSON并在Javascript中解压缩

    I have a large amount of data being sent from server to Javascript, which is taking quite a long tim ...

  4. java json clone_再谈java clone 以及 浅/深拷贝

    package design.creator.prototype; import java.util.ArrayList; import java.util.List;/** * 深度拷贝:*/ cl ...

  5. java json转换xml_在Java中将JSON转换为XML

    我是json的新手.我有一个程序可以从json对象生成xml. String str = "{'name':'JSON','integer':1,'double':2.0,'boolean' ...

  6. java json keyset_使用keySet()从JSONObject提取密钥

    我正在尝试从JSON对象提取密钥.在这种情况下,JSON对象是通过对名为 SkyRock的 社交网站的API调用获得的,如下所示: { "max_page": 2, "p ...

  7. java 将json转成utf 8_解决JSON.stringify()自动将中文转译成unicode的方法

    最近在工作中,发现在IE8下JSON.stringify()自动将中文转译为unicode编码,原本选择的中文字符,传到后台变为了unicode编码,即\u****的形式.查找资料后发现,与标准的JS ...

  8. Java Json API:Gson使用简单入门

    GSON是Google开发的Java API,用于转换Java对象和Json对象.本文讨论并提供了使用API的简单代码示例.更多关于GSON的API可以访问:http://sites.google.c ...

  9. java json开发包 fastjson 简介

    Json是一种轻量级的数据交换格式,采用一种"键:值"对的文本格式来存储和表示数据,在系统交换数据过程中常常被使用,是一种理想的数据交换语言.在使用Java做Web开发时,不可避免 ...

最新文章

  1. PowerShell2.0之桌面计算机维护(九)磁盘管理
  2. 冒名顶替上大学罗彩霞_什么是冒名顶替综合症,您如何克服?
  3. HTML文件属于void值吗,使用HTML :: TreeBuilder查找html文件中的值
  4. Oracle重建回滚段
  5. C# WinForm WebBrowser (三) 编辑模式
  6. java swing 帮助文档,在Java Swing应用程序中创建在线帮助-使用pdf用户文档
  7. Bailian2737 大整数除法【大数】
  8. Mybatis源码概览(一)
  9. linux内核源码分析--内核启动之,Linux内核源码分析之setup_arch (二)
  10. 搭建一个tomcat的JSP服务器环境
  11. python英语单词 扇贝英语安卓下载_扇贝单词英语版app下载-扇贝单词英语版v3.5.803 安卓版-腾牛安卓网...
  12. Java Ajax技术详解:(一)Ajax 简介
  13. 提高个人竞争力的三件法宝
  14. 1553B总线通信协议
  15. 树莓派3b+,4b新手入门到手开箱第一次使用之十大步骤
  16. #7 C++高级--内存管理、文件处理、多线程
  17. PointNet 翻译:
  18. Bad Ugly Numbers
  19. SAP 消息号 KI261 成本中心 XXXX/XXXXX 冻结而不能直接对 XXXX.XX.XX 收入记帐 的问题处理
  20. 详解dagger2----泡在网上的日子

热门文章

  1. 学计算机进富士康,大学生去富士康会分配到流水线上工作吗?
  2. 2017GYL创业营暨青年大会全球招募中
  3. numpy中mgrid()和meshgrid()函数
  4. Socket协议编程实践
  5. 彻底卸载alibabaprotect
  6. php输出源代码,PHP源代码分析-echo实现详解
  7. [算法总结] 中位数+绝对值不等式 AcWing 104. 货仓选址
  8. picview是哪里的图片_pic是图片还是照片
  9. rsa不同编程语言互相加解密
  10. 重构碎片化知识_《碎片化与重构》之如何整合知识碎片