接口测试的时候,发现接口返回内容是unicode类型但是包含中文。在使用print进行打印时输出提示错误:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 733-738: ordinal not in range(128)

查阅资料发现是由于内容中包含了中文字符,导致unix系统在print解析是无法正常解析导致。

源码如下:

def _ejson(con):
comm = "echo '%s' | python -m json.tool" % con
return os.system(comm) if __name__ == "__main__":
con =open('con.json','r')
print _ejson(con)

经过查阅资料以及自我检查

发现con返回的是unicode编码的字符串,其中包换中文。导致print的时候解析失败。

更改后的代码如下:

def _ejson(con):
con = con.encode('utf-8')
comm = "echo '%s' | python -m json.tool" % con
return os.system(comm) if __name__ == "__main__":
con =open('con.json','r')
print _ejson(con)

问题得到完美解决。

附带简单说下python编码的问题:

Python 有两种字符串类型,str 与 unicode:

因为 Python 认为 16 位的 unicode 才是字符的唯一内码,而大家常用的字符集如 gb2312,gb18030/gbk,utf-8,以及 ascii 都是字符的二进制(字节)编码形式。

如果需要将非unicode的编码的str转换成unicode编码,则需要使用decode进行解码,反之如果希望把unicode编码转换成其他字符集则需要使用encode进行编码。

例如:str.decode('utf-8') 将str转换成unicode编码

   str.encode('utf-8')将str转换成utf-8编码

通常情况下,我们需要通过unicode编码进行中转换,进行不同类型编码的相互之间转换

例如:str.decode('gbk').encode('utf-8') 将str由gbk编码变成utf-8编码

												

python中文字符串编码问题的更多相关文章

  1. Python判断字符串编码以及编码的转换

    转自:http://www.cnblogs.com/zhanhg/p/4392089.html Python判断字符串编码以及编码的转换 判断字符串编码: 使用 chardet 可以很方便的实现字符串 ...

  2. Python的字符串编码

    本文用实验详细地演示了Python2和Python3在字符串编码上的区别. 在Python2中,字符串字面量对应于8位的字符或面向字节编码的字节字面量.这些字符串的一个重要限制是它们无法完全地支持国际 ...

  3. python中文utf8编码后是占3个字符,unicode汉字为2字节

    一个中文utf8编码后是占3个字符,所以求长度的函数可以这样写 def str_len(str): try: row_l=len(str) utf8_l=len(str.encode('utf-8') ...

  4. python中字符串编码转换

    字符串编码转换程序员最苦逼的地方,什么乱码之类的几乎都是由汉字引起的. 其实编码问题很好搞定,只要记住一点: 任何平台的任何编码,都能和Unicode互相转换. UTF-8与GBK互相转换,那就先把U ...

  5. Python中文GBK编码解决实例

    http://eatsalt.blog.163.com/blog/static/879402662009420508748/ #coding:gbk l=['我'.decode('gbk'),'我'. ...

  6. python中文字符串前加u

    我明明在编码前就加上了# -*- coding: UTF-8 -*-可是运行时还是出错了, # -*- coding: UTF-8 -*- 这句是告诉python程序中的文本是utf-8编码,让pyt ...

  7. 【python】字符串编码问题

    参考:http://blog.csdn.net/tingsking18/article/details/4033645 python内部的字符串是以unicode来编码 decode函数用来将其他编码 ...

  8. python中字符串编码方式小结

    Python2中字符串的类型有两种:str和unicode,其中unicode是统一编码方式,它使得字符跟二进制是一一对应的,因此所有其他编码的encode都从unicode开始,而其他编码方式按照相 ...

  9. Java 中文字符串编码之GBK转UTF-8

    写过两篇关于编码的文章了,以为自己比较了解编码了呢?! 结果今天又结结实实的上了一课. 以前转来转去解决的问题终归还是简单的情形.即iso-8859-1转utf-8,或者iso-8859-1转gbk, ...

随机推荐

  1. Java排序算法之归并排序

    基本思想: 归并排序利用分治法,先将一个序列分成一个个子序列,然后对子序列进行排序,再把有序子序列合并为整体有序序列. 图片来自于http://www.cnblogs.com/shudonghe/p/ ...

  2. POJ 1741/1987 树的点分治

    树的点分治,主要思想是每次找子树的重心,计算经过根节点的情况数,再减去点对属于同一子树的情况. #include <iostream> #include <vector> #i ...

  3. Java--定时器问题

    定时器问题 定时器属于基本的基础组件,不管是用户空间的程序开发,还是内核空间的程序开发,很多时候都需要有定时器作为基础组件的支持.一个定时器的实现需要具备以下四种基本行为:添加定时器.取消定时器.定时 ...

  4. HashMap 学习笔记

    先摆上JDK1.8中HashMap的类注释:我翻译了一下 /** * Hash table based implementation of the <tt>Map</tt> i ...

  5. Ext4中内存使用技巧的一点思考

           今天在分析Ext4文件系统的时候,看到两个函数ext4_kvzalloc()/ext4_kvfree(),想到以前在使用kzalloc()/kmalloc()带来的内存分配失败问题,不得 ...

  6. Python CGI编程(转自易百)

    Python CGI编程 Python的CGI编程,公共网关接口或CGI,Web服务器和一个自定义的脚本之间交换信息是一组定义的标准.     什么是CGI ? 公共网关接口或CGI,Web服务器和一 ...

  7. 关于制作C语言头文件的思考

    我们接触的第一个c语言代码是这个: #include<stdio.h> main() { printf("Hello World"); } 这是最简单的c代码,然而,它 ...

  8. 如何自建appender扩展Log4j框架

    1.log4j 概述 log4j 环境包括三个主要组件: logger(日志记录器):控制要启用或禁用哪些日志记录语句.可以对日志记录器指定如下级别: ALL . DEBUG . INFO . WAR ...

  9. Docker - 从零开始到操作

    从零开始 介绍Docker的基本概念和命令,并给出简单使用示例和参考信息. Docker - 基础讲义 http://www.cnblogs.com/anliven/p/6281373.html Do ...

  10. 转载+++++iptables详解+++++转载

    转载:http://blog.chinaunix.net/uid-26495963-id-3279216.html 一.前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件 ...