json utf8

python中自带了处理python的模块,使用时候直接import json即可。

使用loads方法即可将json字符串转换成python对象,对应关系如下:
JSON Python
object dict
array list
string unicode
number (int) int, long
number (real) float
true True
false False
null None

一。但在使用json模块的时候需要注意的是对中文的处理,loads方法如果传入的字符串的编码不是UTF-8的话,需要用encoding指定字符编码

#!/usr/bin/env python# -*- coding:utf-8 -*-

import jsonjs = json.loads(‘{"insun": "泰囧 / 人在囧途2 / Lost in Thailand "}‘)print json.dumps(js)print json.dumps(js,ensure_ascii=False)

{"insun": "\u6cf0\u56e7 / \u4eba\u5728\u56e7\u90142 / Lost in Thailand "}
{"insun": "泰囧 / 人在囧途2 / Lost in Thailand "}

二。如果传入的字符串的编码不是UTF-8的话,需要用encoding指定字符编码

对于:

dataDict = json.loads(dataJsonStr);

其中dataJsonStr是json字符串,如果其编码本身是非UTF-8的话,比如是GB2312的,那么上述代码,就会导致出错。改为对应的:

dataDict = json.loads(dataJsonStr, encoding="GB2312");

就可以了。

此处,即对应着上面函数解释中的:

If s is a str instance and is encoded with an ASCII based encoding other than UTF-8 (e.g. latin-1), then an appropriate encoding name must be specified

三。如果要解析的字符串,本身的编码类型,不是基于ASCII的,那么,调用json.loads之前,需要先将对应字符串,转换为Unicode类型的

还是以上述的:

dataDict = json.loads(dataJsonStr, encoding="GB2312");

为 例,即使你此处的字符串dataJsonStr,已经通过encoding指定了合适的编码,但是由于其中,包含了其他的编码的字符,比如我本身 dataJsonStr是GB2312的字符,但是其中又包含了的一些日文字符,此时,json.loads还是会出错,因为此处的 dataJsonStr不是以ASCII为基础的字符编码,所以,需要先去将dataJsonStr转换为Unicode,然后再调用 json.loads,就可以了。

代码如下:


dataJsonStrUni = dataJsonStr.decode("GB2312");
dataDict = json.loads(dataJsonStrUni, encoding="GB2312");

官网:

18.2. json — JSON encoder and decoder

http://docs.python.org/2/library/json.html

json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)
json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])

参考:

python json 中文
Python JSON模块解码中文的BUG
http://www.douban.com/note/214822809/

使用python处理json
http://www.giser.net/?p=990

python下调用json.dumps中文显示问题解决办法
http://blog.csdn.net/sagittar/article/details/6169605

Python解析json数据结构范例
http://hi.baidu.com/leejun_2005/item/fc688affc196f8723c198b7c

Python中json.loads解析包含\n的字符串会出错
http://www.crifan.com/use_python_json_loads_parse_string_contain_newline_will_fail_error/

时间: 2024-10-15 10:39:26

json utf8的相关文章

scrapy抓取到中文,保存到json文件为unicode,如何解决.

http://scrapy-chs.readthedocs.org/zh_CN/latest/intro/overview.html 以上链接是很好的scrapy学些资料.感谢marchtea的翻译. 在学习过程中,碰到一个很棘手的问题: 中文的显示和存储. (中文在控制台显示的为\u77e5\u540d...这样的字符,保存到文件也是这样的) 在网上找了很久,下面这个链接应是最切题的. http://stackoverflow.com/questions/9181214/scrapy-text

Android中Json数据读取与创建

一:  Json的特性和在数据交互中的地位就不用说了,直接看案例. 首先在android studio中创建assets文件目录,用于存放Json数据文件,android studio 1.3 默认项目文件目录下是没有assets文件夹的, 所以需要我们进行创建,创建方法如下: 创建好assets文件目录以后,在其目录下创建一个Text.json文件. 二:如何获得assets文件目录下的Json数据: 在eclipse下是:InputStreamReader(getAssets().open(

Android中JSON数据格式的简单使用

/** * JSON:JavaScript对象表示法(JavaScript Object Notation). <br/> * JSON是存储和交换文本信息的语法.<br/> * * 特点:<br/> * JSON是轻量级的文本数据交换格式<br/> * JSON独立于语言和平台<br/> * JSON具有自我描述性,更以理解<br/> * * 与XML的区别:<br/> * 类似XML,比XML更小.更快.更易解析<

16_Android的数据存储_ SharedPreference、XML和JSON

1. Android读写首选项 1.1 SharedPreferences SharedPreferences 是一种轻型的数据存储方式,它的本质是基于XML文件存储Key-Value键值对数据,通常用来存储一些简单的配置信息,其存储位置在/data/data/<包名>/shared_prefs目录下. SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现.本例程讲解 SharedPreference 数据的读写操作. 1 package

jsonObject关于xml,json,bean之间的转换关系

1.json转换为JAVA @Test public void jsonToJAVA() { System.out.println("json字符串转java代码"); String jsonStr = "{\"password\":\"\",\"username\":\"张三\"}";//添加转义字符 JSONObject jsonObj = JSONObject.fromObject

Java Json API:Gson使用简单入门

GSON是Google开发的Java API,用于转换Java对象和Json对象.本文讨论并提供了使用API的简单代码示例.更多关于GSON的API可以访问:http://sites.google.com/site/gson/. 本文是GSON系列文章的第一篇.本文是其他文章的基础,因此不需要任何GSON或JSON经验.第二篇文章提供了关于GSON反序列化(从JSON到Java)的示例,第三篇文章提供了关于GSON序列化(从Java到JSON)的示例. 下面列出的所有代码都可以在https://

android中的json二之json的读写

android中的json的读取 1.读取Json文件中的json内容 首先在将json文件放在目录assets下: test.json {"programmers":[{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}, {"firstName":"Jason&quo

node读写json文件(进阶)

该方法可用于修改配置文件,直接上代码 fs.readFile('test1.json','utf8',function (err, data) { if(err) console.log(err); var test1=JSON.parse(data); test1.name="li"; var t = JSON.stringify(test1); fs.writeFileSync('test1.json',t) }); 正常情况下从JSON文件读取到字符后再通过JSON.parse没

HTTP POST 发送JSON格式数据(解决Expect:100-continue 问题)

最近在开发的一个项目,需要涉及到使用Http请求发送比较大的数据,研究了挺长时间,遇到问题,解决问题,在此分享给大家 1.由于数据量较大,所以采用POST方式 传输数据(POST理论上不限制数据大小,但不同服务器都会有相应的默认设置限制数据大小) 2.由于项目需要,使用JSON格式的数据 代码示例: JAVA 版,使用Apache的commons-httpClient包 发送http请求,代码仅供参考,发送请求方式可根据自己需要进行修改 import org.apache.commons.htt