Python中文问题

以下皆为Python2.x中--------------------


1、str与unicode

s = '哈哈'		#str对象
u = u'哈哈'		#unicode对象

Python系统内部表示字符串使用unicode对象,采用默认编码。

str对象,即展现出的字符串,经过了utf-8或gbk方式等编码。

Windows下命令行控制台使用gbk编码,所以在控制台中s以gbk格式编码,ss为unicode

IDLE中默认同样为gbk编码,所以s为gbk编码;很奇怪的是,ss同样为gbk编码……


2、encode与decode

u.encode('utf-8')将unicode对象u编码为str,参数为编码方式

s.decode('utf-8')将str对象s解码为unicode,参数为解码方式

s = '哈哈'               # '\xb9\xfe\xb9\xfe'
u = u'哈哈'              # u'\u54c8\u54c8'                #在IDLE下为'\xb9\xfe\xb9\xfe'
ss = s.decode('gbk')     # u'\u54c8\u54c8'                #在IDLE下为u'\u54c8\u54c8'
uu = u.encode('gbk')     # '\xb9\xfe\xb9\xfe'

故而将gbk转为utf-8,可用str.decode('gbk').encode('utf-8')


3、Python使用中文

# coding=utf-8

此条指令用于指明该文件以utf-8格式编码,以utf-8格式解析可能存在的中文。同时,文件中的str对象都是utf-8格式编码。

FTP服务器不一定采用哪种编码方式,通过ftplib访问“高清”的电影时

path = "影视/电影/高清"
ftp.cwd(path)									#若服务器同样为utf-8,传递path参数没问题
ftp.cwd(path.decode('utf-8').encode('gbk'))		#若服务器为gbk,则需将path转为gbk格式
当然,也可以用以下方式,本质是相同的,只不过path直接存储的unicode而已。这样,当源文件编码改变时不需改变代码。

path = u"影视/电影/高清"
ftp.cwd(path.encode('gbk'))
--------------------------------------------------
在IDLE或windows命令行中,可以不指定源文件coding并且直接使用
path = "影视/电影/高清"
ftp.cwd(path)
如上所述,IDLE和windows命令行默认为gbk,path参数同样为gbk,而服务器恰好也为gbk……

很多时候,采用默认编码可以执行,但自己指定源文件编码后却不可执行,都是因为与待读取文件、远程服务端格式不匹配造成的。

---------------------------------------------------

Python3.x中str对象同样为unicode,原生支持中文了……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值