一、编码

常见的编码比较:

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. 重叠(Overlapping) NAT

    当内部网络也使用公网注册地址(或者是外网合法地址)时,如果仍使用标准的静态或者动态NAT转换,则可能使得转换的内网地址与外网中合法地址冲突,使数据包又返回到了本地网络,这肯定是不行的.这时我们就要使用 ...

  2. Eclipse自动补全功能管理

    #这种方法只适用于Eclipse Classic版本(这个版本带有插件的源码) 在使用Eclispe的过程,感觉自动补全做的不好,没有VS的强大.下面说两个增强自动补全的方法: 1.增加Eclipse ...

  3. win10 进入安全模式的方法

    [收藏] 楼主 水际天成 只看他 2014-12-19 17:53:26 Windows10出问题了,无法加载了,一直停留在鼠标刚刚出现的那个界面,只能看到计算机屏幕变了颜色,然后就没有任何反映了.想 ...

  4. 【Spring】构建Springboot项目 实现restful风格接口

    项目代码如下: package hello; import org.springframework.boot.SpringApplication; import org.springframework ...

  5. 37-wc 简明笔记

    显示行数.单词数和字节数 wc [options] [file-list] 参数 file-list是wc分析的一个或多个文件的路径名列表.如果省略file-list,wc就从标准输入中读取输入 选项 ...

  6. jq实现登陆页面的拖拽功能

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <script src ...

  7. [转]Mybatis极其(最)简(好)单(用)的一个分页插件

    原文地址:http://blog.csdn.net/isea533/article/details/23831273 分页插件示例:http://blog.csdn.net/isea533/artic ...

  8. 数组的方法 Array.map();Array.every()和Array.some();数组的indexof();检测是否是数组isArray(obj);

    数组的方法 Array.map(); 栗子: var a=[1,2,,3]; var b=a.map( function(value){return value*value} ); alert(b); ...

  9. Java设计模式(二) 观察者模式

    观察者模式: 定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,他的所有依赖者都会受到通知并自动更新. 1,定义事件源接口 package com.pattern.observer; pub ...

  10. nginx的安装

    1,,nginx的安装 为什么使用nginx我就不多说了,很优秀的,请再行google 在安装前,先安装pcre,安装zlib,安装openssl,以及一些其他包 yum install -y gcc ...