Python中的编码

Python处理字符串,写文件时会碰到许多的编码问题,特别是涉及到中文的时候,非常烦人,但又不得不学。下面主要记录工作过程中碰到的Python编码问题。

1. 字符串编码

Python的字符串类型为str,可以通过type函数查看返回的类型。Python中字符串默认的编码方式需要通过sys.getfilesystemencoding()查看,通常是utf-8u'中文'构造出来的是unicode类型,不是str类型。

# 查看字符串编码方式
>>> import sys
>>> print sys.getfilesystemencoding()
utf-8

>>> s1 = '中国'
>>> s2 = u'中国'
>>> type(s1)
<type 'str'>
>>> type(s2)
<type 'unicode'>

str类型和unicode类型分别有decodeencode函数。str.decode用来将str转为unicodeunicode.encode用来将unicdoe转为str。用法如下:

# decode
>>> s1.decode('utf8')
u'\u4e2d\u56fd'
>>> type(s1.decode('utf8'))
<type 'unicode'>

# encode
>>> s2.encode('utf8')
'\xe4\xb8\xad\xe5\x9b\xbd'
>>> type(s2.encode('utf8'))
<type 'str'>

2. 代码文件编码

py文件默认的编码是ASCII编码,中文显示时会进行ASCII编码到系统默认编码的转换,在运行Python文件时经常会报错。因此需要设置py文件的编码为utf-8。设置方式如下:

# _*_ coding: utf-8 _*_        

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

40+个对初学者非常有用的PHP技巧(一)

今天我们要介绍一些关于改善和优化PHP代码的提示和技巧。请注意,这些PHP技巧适用于初学者,而不是那些已经在使用MVC框架的人。

532
来自专栏Java进阶

再谈session 和 cookie的差异

2558
来自专栏https://www.cnblogs.com/L

Linux篇---Grep和正则匹配

\                  转义字符 .                      匹配任意单个字符 [1249a],[^12],[a-k]  字符序...

1263
来自专栏C/C++基础

段错误之memset对类对象的误用

使用new定义一个DICCUOriginalTask的对象指针之后,使用memset将对象实体置为0之后,在使用delete析构该对象,就会出现莫名其妙的段错误...

711
来自专栏take time, save time

初级程序员面试不靠谱指南(二)

3.read-only的const。如果你突然冒出一句看似很高深的话但又不解释一般都是装逼,就像前面提到过const准确的应该理解为一个read-only的变量...

2707
来自专栏Coding迪斯尼

java开发系统内核:创建文件操作API

1223
来自专栏C/C++基础

C/C++头文件的作用和用法

示例代码编译运行环境:Windows 64bits+VS2017+Debug+Win32。

921
来自专栏从零开始学 Web 前端

JavaScript基础(一)概述

ECMAScript(前身为欧洲计算机制造商协会):JavaScript的语法规范

783
来自专栏企鹅号快讯

ajax 跨域,这应该是最全的解决方案了

问题:我怎么才能收到你们公众号平台的推送文章呢? 前言 从刚接触前端开发起, 这个词就一直以很高的频率在身边重复出现,一直到现在,已经调试过N个跨域相关的问题了...

1935
来自专栏风中追风

分布式基础__session 和 cookie的差异

HTTP协议是一种无状态的 通信协议 。那么这就以为着 客户端按道理是需要每次请求之前都要和服务器做连接的。 但是每次都进行这种连接,会非常耗时,并且这些重复...

37610

扫码关注云+社区