python2 print 中文_python2中 print()中文乱码怎么办

python内部使用的是unicode编码,而外部会用到各种编码,中国最常用utf-8。

python默认会认为源代码文件是ascii编码,ascii编码中不存在中文,遇到中文会抛出异常。

一、声明utf-8编码格式

此时需要在头部声明utf-8编码格式,常用声明方法有这么3种

#coding=utf-8

#coding:utf-8

#!/usr/bin/python#-*- coding:utf-8 -*-

注意:

前两种不能有空格。

第一行和第二行重复定义,第一行生效,第二行不生效。

在python 里认为utf8和utf-8是一种编码格式utf-8。

不过这不是万能的,对于有的汉字,还是偶尔会乱码,这时候转换成unicode对象一般就可以了

二、转换成unicode对象

将字符串转换成unicode对象常用的3种方法:

1、字符串前面加u

s1=u'国道图层'print ('s1:'+s1)

u将字符串以unicode格式存储。python头部声明的utf-8编码识别字符串,然后转换成unicode对象。

也就是说不加u就是某种编码的字符串,这里是utf-8编码的字符串。

如果加u就是一个unicode对象。

可以用type()函数查看数据类型。

2、unicode()

s2=unicode('国道图层', 'utf-8')

print ('s2:'+s2)

unicode类需要传入两个参数,第一个是字符串参数,第二个是编码参数,会将字符串封装为一个unicode对象。

3、decode()

s3='国道图层'.decode('utf-8')

print ('s3:'+s3)

decode是将普通字符串按照参数中的编码格式进行解析,然后生成对应的unicode对象。

补充:与decode()相反的就是encode(),encode()是将一个unicode对象转换为参数中编码格式的普通字符。如下:

s4=unicode('国道图层', 'utf-8').encode('utf-8')

print ('s4:'+s4)

三、代码测试

#coding=utf-8

s='国道图层'

print ('s:'+s)print(type(s))

s1=u'国道图层'

print ('s1:'+s1)print(type(s1))

s2=unicode('国道图层', 'utf-8')print ('s2:'+s2)print(type(s2))

s3='国道图层'.decode('utf-8')print ('s3:'+s3)print(type(s3))

s4=unicode('国道图层', 'utf-8').encode('utf-8')print ('s4:'+s4)print(type(s4))

运行结果:

>>> ================================ RESTART ================================

>>>s:鍥介亾鍥惧眰s1:国道图层s2:国道图层s3:国道图层s4:鍥介亾鍥惧眰

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值