python2下解决json的unicode编码问题

基础知识:

  序列化——json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为json字符串)

  反序列化——json.loads()函数是将json格式数据转换为字典(可以这么理解,json.loads()函数是将json字符串转化为字典)

python 2下使用json.loads往往会导致最终的结果编码是unicode,并不是我们想要的str型,如下所示:

test = {"name": "扎克伯格", "age":18}
  print test
  test_json = json.dumps(test, ensure_ascii=False)   ——中文打印会默认为ASCII,所以显示Unicode,需要将ensure_ascii=False才会显示中文
  print test_json
  test1 = json.loads(test_json)
  print test1

运行的结果是:

{‘age‘: 18, ‘name‘: ‘\xe6\x89\x8e\xe5\x85\x8b\xe4\xbc\xaf\xe6\xa0\xbc‘}
{"age": 18, "name": "扎克伯格"}
{u‘age‘: 18, u‘name‘: u‘\u624e\u514b\u4f2f\u683c‘}

原文地址:https://www.cnblogs.com/blogofzxf/p/11096250.html

时间: 2024-08-29 21:33:18

python2下解决json的unicode编码问题的相关文章

python2下向文件写入unicode编码的内容,codecs包

python内置库中的open方法只能读写ascii码,如果想写入Unicode字符,需要使用codecs包. 1 # -*- coding: utf-8 -*- 2 import codecs 3 import traceback 4 content = u'你好' 5 f = None 6 try: 7 f = codecs.open('c:/test.txt', 'w', 'utf-8') 8 f.write(content) 9 exception: 10 print traceback

phpstorm配置git并解决Terminal 中文乱码(Unicode 编码)的方法

前言:在使用PHPstorm的时候,需要用到terminal,主要还是用这个操作git,但是在使用这个的时候会发现,代码里所有中文都是乱码状态,不利于使用,下面就来看看怎么解决这个问题 一.先在phpstorm上配置git 1.打开 settings 设置界面,选择 Tools 中的 Terminal (File -> settings -> Tools -> Terminal) 2.修改 Shell path 为你的Git bash 安装路径,我的在 D:\developer\Git\

解决 iOS NSDictionary 输出中文字符”乱码”(Unicode编码)问题

简单定义一个字典,输出结果: NSDictionary *dic = @{ @"我是中文字符": @"223333", @"aaa": @{ @"aaa": @"啦啦啦" } }; NSLog(@"%@", dic); 将会看到这样的"乱码",这种现象经常在调试服务端返回 JSON 结果的时候遇到: 2015-02-25 19:23:40.346 XXXX[13273

解决JSON.stringify()自动将中文转译成unicode的方法

最近在工作中,发现在IE8下JSON.stringify()自动将中文转译为unicode编码,原本选择的中文字符,传到后台变为了unicode编码,即\u****的形式.查找资料后发现,与标准的JSON.stringify()不同,IE8内置的JSON.stringify()会自动将编码从utf-8转为unicode编码,导致出现这种类似于乱码的情况. 解决方法分为两种,第一种是后台接收到数据之后,将该数据再进行一次转码,重新转为utf-8,然后再保存到数据库中,这样,再次从数据库取出传给前端

java中文乱码解决之道(三)—–编码详情:伟大的创想—Unicode编码

原文出处:http://cmsblogs.com/?p=1458 随着计算机的发展.普及,世界各国为了适应本国的语言和字符都会自己设计一套自己的编码风格,正是由于这种乱,导致存在很多种编码方式,以至于同一个二进制数字可能会被解释成不同的符号.为了解决这种不兼容的问题,伟大的创想Unicode编码应时而生!! Unicode Unicode又称为统一码.万国码.单一码,它是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言.跨平台进行文本

java中文乱码解决之道(三)-----编码详情:伟大的创想---Unicode编码

随着计算机的发展.普及,世界各国为了适应本国的语言和字符都会自己设计一套自己的编码风格,正是由于这种乱,导致存在很多种编码方式,以至于同一个二进制数字可能会被解释成不同的符号.为了解决这种不兼容的问题,伟大的创想Unicode编码应时而生!! Unicode Unicode又称为统一码.万国码.单一码,它是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言.跨平台进行文本转换.处理的要求.可以想象Unicode作为一个"字符大容器&qu

PHP输出json数据时,中文不进行unicode编码

今天在写和API接口时,将PHP数组转成json,但是有个规则是不能用unicode编码 试了几种方法: 若PHP是5.4以上的 可以直接使用JSON_UNESCAPED_UNICODE参数 json_encode('中文测试',JSON_UNESCAPED_UNICODE); 这种方法字符串可行,但是数组不可行(有待验证) 2.将数组中的字符串urlencode,然后将数组json_encode转成json,最后进行urldecode 注:urlencode()和urldecode()将中文字

ASCII,Utf8,Unicode编码下的中英文字符大小

一,测试Demo namespace 不同编码下的中英文字符大小 { class Program { static void Main(string[] args) { ShowCode(); } private static void ShowCode() { string[] strArray = { "b","abc","乙","甲乙丙丁"}; byte[] buffer; string mode, back; fore

MFC Unicode编码下,获取CString描述的IP地址并赋值到CIPAddressCtrl控件中

1. UniCode编码下,CString中字符被声明为宽字,应使用如下方法获取char* CString cstrIp = strIp; // Unicode 下将 CString转为char* int n = cstrIp.GetLength(); int len = WideCharToMultiByte(CP_ACP,0,cstrIp,cstrIp.GetLength(),NULL,0,NULL,NULL); char *p = new char[len+1]; WideCharToMu