文档章节

python编码总结

周舟Fly
 周舟Fly
发布于 2016/11/02 18:09
字数 261
阅读 18
收藏 0

python 的编码是一个坑,并且2.x 和3.x还不一样,总结一下,先看看平时代码中遇到的四种情况:

情况一:

# -*- coding: utf-8 -*-
s = '我的'
print(s)
print(type(s)) # python2.7: <type 'str'> ,python3.5:<class 'str'>

情况二:

# -*- coding: utf-8 -*-
s = u'我的'
print(s)
print(type(s)) # python2.7: <type 'unicode'> ,python3.5:<class 'str'>

情况三:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
s = '我的'
print(s)
print(type(s)) # python2.7: <type 'unicode'> ,python3.5:<class 'str'>

情况四:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
s = u'我的'
print(s)
print(type(s)) # python2.7: <type 'unicode'> ,python3.5:<class 'str'>

总结一下:首先要明白一个问题,python3下的str 就是unicode,python2下u'我的'是unicode,'我的'.decode('utf-8')是unicode.编码的时候要使用的原则是,处理前先decode成unicode ,处理后encode成相应的编码.上面的四种情况,兼容的情况下,最好使用情况三,这种情况下(from future import unicode_literals),定义的字符串都是unicode,可以统一处理.觉得第四种情况字符串前面加u有点画蛇添足了.

© 著作权归作者所有

上一篇: ubuntu下科学上网
下一篇: ubuntu下科学上网
周舟Fly
粉丝 0
博文 2
码字总数 670
作品 0
朝阳
私信 提问

暂无文章

Java编程学习-Java虚拟机(JVM)以及跨平台原理

相信大家已经了解到Java具有跨平台的特性,可以“一次编译,到处运行”,在Windows下编写的程序,无需任何修改就可以在Linux下运行,这是C和C++很难做到的。 那么,跨平台是怎样实现的呢?这...

Java领航员
31分钟前
0
0
学JFinal不迷路,JFinal优质资源列表(欢迎反馈更新)

学JFinal不迷路,记录一下JFinal相关的资源、产品、讲师等信息(所有信息排名不分先后)。 一、相关站点: 1、JFinal官网-问答、分享、文档、交流、俱乐部 http://www.jfinal.com 2 、JFina...

山东-小木
35分钟前
1
0
项目学习(2)-order-job

在当前的系统中,因为并发量并不高,服务之间发起异步请求或者异步调用时,没有使用到消息中间件。 而是在各个服务(子系统)的数据库中,创建了event_queue事件对列表和event_handler事件处...

太猪-YJ
43分钟前
1
0
gradle grovvy中的闭包

1. 无参数的闭包 //这b1就是一个闭包def b1={ println "hello b1"}//定义方法,包含闭包类型的参数def method1(Closure closure){closure()}//执行method1method1(b1) 执行结果 ...

edison_kwok
今天
3
0
基于Spring Boot + Dubbo的全链路日志追踪(一)

一、 概要 当前公司后端整体架构为:Spring Boot + Dubbo。由于早期项目进度等原因,对日志这块没有统一的规范,基本上是每个项目自己管自己的日志。这也对后面的问题排查带来了很大的困难,...

明天以后
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部