一、编码

常见的编码比较:

ascii:1个字节

unicode:2个字节

utf-8:英文1个字节,汉字3个字节

二、一个编码问题

问:如下代码设置了在代码中添加了coding: utf-8,但是在cmd下面运行的时候还是输出乱码,这是什么情况?

test.py:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print “你好”

答: cmd默认的编码是GBK格式的,所以只在代码里写了coding: utf-8也是不行的。

解决方案:

1.修改cmd的编码为utf-8格式:

此方法这里就不详述了,参考链接

2.使代码以gbk的格式输出:

#!/usr/bin/env python
# -*- coding: utf-8 -*- temp = "你好"
temp_unicode = temp.decode('utf-8') #把utf-8解码成unicode格式
temp_gbk = temp_unicode.encode('gbk') #把unicode编码成gbk格式
print temp_gbk

python3和与python2的差异:

对于上面解决方案中的代码可能只存在于python2中,在python3中情况就大不一样了。

在python3中utf-8编码能直接转成gbk格式的编码,在python3中代码可以写成下面这样:

#!/usr/bin/env python
# -*- coding: utf-8 -*- temp = "你好"
temp_gbk = temp.encode('gbk') #在python3中utf-8编码能直接转成gbk格式的编码
print temp_gbk

三、不同场景下的字符编码方式

在现在计算机中通用的字符编码工作方式:在内存中统一使用unicode,需要保存到硬盘或要传输的时候就会转为utf-8。

  • 使用记事本编辑的时候,文件读取的utf-8字符被转换为unicode字符到内存里,编辑完成后,保存的时候再把unicode转换为UTF-8保存到文件里

  • 浏览网页时,服务器会把动态生成的unicode转换为utf-8,再传输到浏览器。因此会在网页源码上有类似的信息,表示该网页用的就是utf-8编码。

四、字符串与字节

补充

bytes类型(和int,str类似的数据类型)

s = "你好"
for i in s:
bytes_list = bytes(i,encoding='utf-8') #bytes可以把字符串转换为字节
print(bytes_list) for j in bytes_list: #在迭代输出16进制的字节时,默认以10进制方式输出
print(j) OUTPUT:
b'\xe4\xbd\xa0'
228
189
160
b'\xe5\xa5\xbd'
229
165
189

字符串与字节的转换

a ="你好"

b = bytes(a,encoding='utf-8')       #把字符串转换为字节类型
c = str(b,encoding='utf-8') #把字节转换为字符串类型 print(b)
print(c) OUTPUT:
b'\xe4\xbd\xa0\xe5\xa5\xbd'
你好

应用场景

两个server互相通信,如果使用utf-8编码,则通信过程如下:

python编码的更多相关文章

  1. (转载) 浅谈python编码处理

    最近业务中需要用 Python 写一些脚本.尽管脚本的交互只是命令行 + 日志输出,但是为了让界面友好些,我还是决定用中文输出日志信息. 很快,我就遇到了异常: UnicodeEncodeError: ...

  2. Python 编码简单说

    先说说什么是编码. 编码(encoding)就是把一个字符映射到计算机底层使用的二进制码.编码方案(encoding scheme)规定了字符串是如何编码的. python编码,其实就是对python ...

  3. Python之路3【知识点】白话Python编码和文件操作

    Python文件头部模板 先说个小知识点:如何在创建文件的时候自动添加文件的头部信息! 通过:file--settings 每次都通过file--setings打开设置页面太麻烦了!可以通过:View ...

  4. python编码规范

    python编码规范 文件及目录规范 文件保存为 utf-8 格式. 程序首行必须为编码声明:# -*- coding:utf-8 -*- 文件名全部小写. 代码风格 空格 设置用空格符替换TAB符. ...

  5. 【转】python编码的问题

    摘要: 为了在源代码中支持非ASCII字符,必须在源文件的第一行或者第二行显示地指定编码格式: # coding=utf-8 或者是: #!/usr/bin/python # -*- coding: ...

  6. 【转】python编码规范

    http://blog.csdn.net/willhuo/article/details/49300441 决定开始Python之路了,利用业余时间,争取更深入学习Python.编程语言不是艺术,而是 ...

  7. python 编码 UnicodeDecodeError

    将一个py脚本从Centos转到win运行,出错如下: UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 0: il ...

  8. Python编码/文件读取/多线程

    Python编码/文件读取/多线程 个人笔记~~记录才有成长   编码/文件读取/多线程 编码 常用的一般是gbk.utf-8,而在python中字符串一般是用Unicode来操作,这样才能按照单个字 ...

  9. 关于Python编码,超诡异的,我也是醉了

    Python的编码问题,真是让人醉了.最近碰到的问题还真不少.比如中文文件名.csv .python对外呈现不一致啊,感觉好不公平. 没图说个JB,下面立马上图.   我早些时候的其他脚本,csv都是 ...

  10. 规范的python编码

    规范的 python 编码令人赏心悦目,令代码的表达逻辑更清晰,使得工程代码更容易被维护和交流: 编码规范包括对于代码书写格式的约束,不良语法的禁用和推荐的编码手法,下面做些简要的描述: 1. 代码规 ...

随机推荐

  1. SQL2005SP4补丁安装时错误: -2146233087 MSDTC 无法读取配置信息。。。错误代码1603的解决办法

    是在安装slq2005sp3和sp4补丁的时候碰到的问题. 起先是碰到的错误1603的问题,但网上搜索的1603的解决办法都试过了,google也用了,外文论坛也读了,依然没有能解决这个问题. 其实一 ...

  2. manifest资源提取工具

    因业务需要,写了个manifest资源提取工具,该机制是将html文件作为入口文件进行资源抓取.原理是先简单扫html token,然后直接遍历每个tag token是否属于需要的资源(css,js, ...

  3. CSS 栅格布局

    bootstrap3.0教程之栅格系统原理(布局) http://www.jb51.net/css/152846.html [div+css]栅格化布局样式备用坑 http://www.0773lin ...

  4. hihocoder1241 Best Route in a Grid

    题目链接:hihocoder 1241 题意: n*n的格阵,每个方格内有一个数字.蚂蚁从左上角走到右下角,数字是零的方格不能走,只能向右向下走.蚂蚁走的路径上全部方格的的乘积为s,要使s低位0的个数 ...

  5. Linux配置VNC实现远程图形化操纵

    问题描述 有些时候需要用到图形化,其实可以通过其他途径实现.但是懒惰的就喜欢VNC,总的老说都是需要图形组件的 问题解决 在Centos测试 一.图形化的Linux 01.安装 rpm  ivh vn ...

  6. hibernate的hql查询

    1.概念介绍 1.Query是Hibernate的查询接口,用于从数据存储源查询对象及控制执行查询的过程,Query包装了一个HQL查询语句. 2.HQL是Hibernate Query Langua ...

  7. oracle游标调试结果显示位置

    在SQL窗口输入内容,按F8后,可以在下图看到

  8. JAVA file文件操作

    /** *文件重命名 * @param oldname 原来的文件名 * @param newname 新文件名 */ @RequestMapping("renameFile") ...

  9. java进程CPU飙高

    因为这段时间一直在弄监控,但是工作还是在进行中 因为机器不多,所以今天早上巡检了一下,看到一台生产机器上的CPU飙高 top

  10. Image Segmentation的定义

    Definition 图像分割将一张图分为\(n\)个region, 需要满足下面5个条件 每一个像素都要属于一个region 每个region都是连通的 region与region之间没有交集 re ...