相关疑难解决方法(0)

将json.dumps中的utf-8文本保存为UTF8,而不是\ u转义序列

示例代码:

>>> import json
>>> json_string = json.dumps("??? ????")
>>> print json_string
"\u05d1\u05e8\u05d9 \u05e6\u05e7\u05dc\u05d4"
Run Code Online (Sandbox Code Playgroud)

问题是:它不是人类可读的.我(智能)用户想要使用JSON转储验证甚至编辑文本文件.(我宁愿不使用XML)

有没有办法将对象序列化为utf-8 json字符串(而不是\ uXXXX)?

这没有帮助:

>>> import json
>>> json_string = json.dumps("??? ????")
>>> print json_string
"\u05d1\u05e8\u05d9 \u05e6\u05e7\u05dc\u05d4"
Run Code Online (Sandbox Code Playgroud)

工作,但如果任何子对象是python-unicode而不是utf-8,它将转储垃圾:

>>> import json
>>> json_string = json.dumps("??? ????")
>>> print json_string
"\u05d1\u05e8\u05d9 \u05e6\u05e7\u05dc\u05d4"
Run Code Online (Sandbox Code Playgroud)

python unicode json escaping utf-8

394
推荐指数
11
解决办法
29万
查看次数

JSON字符编码 - 浏览器是否支持UTF-8,还是应该使用数字转义序列?

我正在编写一个使用json来表示其资源的web服务,我有点想到编写json的最佳方法.阅读json rfc(http://www.ietf.org/rfc/rfc4627.txt)显然首选的编码是utf-8.但rfc还描述了一种用于指定字符的字符串转义机制.我假设这通常用于转义非ascii字符,从而使得得到的utf-8有效ascii.

所以,假设我有一个json字符串,其中包含非ascii的unicode字符(代码点).我的webservice应该只是utf-8编码并返回它,还是应该逃脱所有那些非ascii字符并返回纯ascii?

我希望浏览器能够使用jsonp或eval执行结果.这会影响决定吗?我对各种浏览器对utf-8的javascript支持的了解很少.

编辑:我想澄清一下,我对如何对结果进行编码的主要关注点是关于结果的浏览器处理.我读过的内容表明,特别是在使用JSONP时,浏览器可能对编码很敏感.我没有找到关于这个主题的任何非常好的信息,所以我将不得不开始做一些测试,看看会发生什么.理想情况下,我只想逃避所需的几个字符,只需对utf-8进行编码即可.

unicode json web-services utf-8

78
推荐指数
5
解决办法
19万
查看次数

Django:防止字符串被unicode转义?

我试图防止valuePOST 请求中的字符串(在本例中为变量)被转义,因为它存储在 JSON 中。我的代码是

def addProduct(request):
    if request.POST:
        post = {}
        for key in request.POST:
            value = request.POST[key].encode('utf-8')
            try:
                value = json.loads(value).encode('utf-8')
            except Exception:
                pass
            post[key] = value.encode('utf-8')
        doc = json.dumps(post)
Run Code Online (Sandbox Code Playgroud)

我可以看到的调试value是 unicode 类型,我相信这就是 Django 处理请求对象的方式。实际的字符串,尽管 unicode 在 之前不会对其特殊字符进行转义post[key] = value。如果我尝试更改此设置post[key] = value.encode('utf-8')以防止它被转义,则会收到错误:'ascii' codec can't decode byte 0xe2 in position 38: ordinal not in range(128)

有任何想法吗?

python django encoding

3
推荐指数
1
解决办法
5723
查看次数

如何在 python 中正确编码 json 转储

我有一个 python 3 脚本,应该从 .csv 文件获取一些数据并将其写入 json 文件。\n在我的处理过程中,编码是正确的,因此德语元音 \xc3\xbc、\xc3\xa4 或度数符号\xc2\xb0 就像它们一样(#coding=cp1252 在头部)。

\n

但是当我通过 json.dump() 编写字典时,编码消失了......

\n

如何使用正确的编码将字典写入 json 文件?

\n\n
# -*- coding: cp1252 -*-\nimport json\nfrom pandas import read_csv\n\nx={"\xc3\xa4\xc3\xb6": "\xc3\xbc\xc2\xb0"}\nprint(x, json.dumps(x, indent=4))\n\n>>>> {\'\xc3\xa4\xc3\xb6\': \'\xc3\xbc\xc2\xb0\'} {"\\u00e4\\u00f6": "\\u00fc\\u00b0"}\n
Run Code Online (Sandbox Code Playgroud)\n

python json dump

3
推荐指数
1
解决办法
1677
查看次数

标签 统计

json ×3

python ×3

unicode ×2

utf-8 ×2

django ×1

dump ×1

encoding ×1

escaping ×1

web-services ×1