Python中使用中文

摘要:
Python默认支持的是ASCII字符,包含了英文字母大小写以及标点符号,用一枚字节表示。中文则使用两枚字节表示。建议使用统一字符集Unicode,可以处理所有的语言文字。先别急着去练习,咱们来看看下面这个脚本:#-*-coding:utf-8–*-#chinese.pychinese='''在Python中使用中文,一定要注意字符编码问题'''printchinese在命令行运行的结果:这是咋回事呢?printchinese.decode.encodeOK,熟悉的文字出来了。

这个问题曾在我初学Python的时候令我头疼不已,尤其是目前我们因为各种包的原因还只能使用2.x的版本。在3.x中字符编码已经统一用Unicode了。

Python 默认支持的是ASCII字符,包含了英文字母大小写以及标点符号,用一枚字节表示。中文则使用两枚字节表示。

没兴趣的同学可以绕过这段…

有人可能要问了,我擦,为神马以前说一个汉字的精度越高字节越多么?为神马是两枚字节?

这是两个不同的概念。存储里讲的是一个汉字占两个字节。 而你说的点阵那个是打印码。

平时说1个汉字占2个字节,是指汉字编码,就象每个字符都有一个ASCII码一样。1个ASCII码占1个字节,而1个汉字编码占2个字节。

简单地解释下,我们屏幕上看到的汉字其实是一个16*16的矩阵,它所需要的位数共是16*16=256个位,每个字节为8位,因此,每个汉字都需要用256/8=32个字节来表示。

即每两个字节代表一行的16个点,共需要16行,显示汉字时,只需一次性读取32个字节,并将每两个字节为一行打印出来,即可形成一个汉字。

这也就是传说中的点阵字体。

image

---我是正文的分割线---

So当中文编码和ASCII混用的话,就会出现错误咯。

目前中文编码有GB2312,BIG5,GBK。

建议使用统一字符集Unicode,可以处理所有的语言文字。

如果在.py文件中使用中文,请使用:

#-*- coding:utf-8 –*-

请注意在使用IDE的时候,project的编码格式一定要设置为utf-8,否则输出的仍是乱码,因为你写的脚本没用UTF-8保存。

先别急着去练习,咱们来看看下面这个脚本:

#-*- coding:utf-8 –*-

# chinese.py

chinese='''
在Python中使用中文,一定要
注意字符编码问题
'''
print chinese

在命令行运行的结果:

7P%Q7S)3M~QJE)K0QJ5~IQC

这是咋回事呢?不是写了编码了么?还乱码啊,有木有?有木有?有木有?

这是因为win的,命令行用的是cp936编码,而上面脚本用的是utf-8编码,因此导致乱码。

解决方法是,使用decode和encode函数对字符重新解码和编码。

print chinese.decode('utf-8').encode('cp936')

OK,熟悉的文字出来了。

image

2011/8/8更新,以下内容转载自:

http://ppjava.iteye.com/blog/210143

常见的编码转换分为以下几种情况:

  • unicode->其它编码
    例如:a为unicode编码 要转为gb2312。a.encode('gb2312')
  • 其它编码->unicode
    例如:a为gb2312编码,要转为unicode. unicode(a, 'gb2312')或a.decode('gb2312')
  • 编码1 -> 编码2
    可以先转为unicode再转为编码2
    如gb2312转big5
    unicode(a, 'gb2312').encode('big5')
  • 判断字符串的编码
    isinstance(s, str) 用来判断是否为一般字符串
    isinstance(s, unicode) 用来判断是否为unicode
  • 如果一个字符串已经是unicode了,再执行unicode转换有时会出错(并不都出错)
    可以写一个通用的转成unicode函数:
    def u(s, encoding):
    if isinstance(s, unicode):
    return s
    else:
    return unicode(s, encoding)

免责声明:文章转载自《Python中使用中文》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何在Ubuntu server中修改IP帧率、分辨率、码流的关系下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

语音信号处理(声速,回声,音高,界面设计PyQt5)_Python语言

def YuSu(self): #语速设置 f = wave.open(r"test.wav", "rb") # 读取格式信息 # (nchannels, sampwidth, framerate, nframes, comptype, compname) params...

如何利用 Python 爬虫实现给微信群发新闻早报?(详细)

1. 场景 经常有小伙伴在交流群问我,每天的早报新闻是怎么获取的? 其实,早期使用的方案,是利用爬虫获取到一些新闻网站的标题,然后做了一些简单的数据清洗,最后利用 itchat 发送到指定的社群中。 由于爬虫面对 网站改版的不稳定性及 itchat 不安全性,所以放弃了这种方案 后期更改了一种方案,通过修改爬虫方案,创建 API 服务,编写 App 去获...

python设计模式之猴子补丁模式

1、所有书中都没有把猴子补丁作为一种设计模式来看待。因为设计模式的模式的命名是根据java中提炼出来的,语言方式决定了java绝对不会有也不需要有这种操作,不存在的。那自然设计模式不会包括猴子补丁模式。 2、根据百度百科介绍,设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开...

15分钟破解网站验证码

  概述 很多开发者都讨厌网站的验证码,特别是写网络爬虫的程序员,而网站之所以设置验证码,是为了防止机器人访问网站,造成不必要的损失。现在好了,随着机器学习技术的发展,机器识别验证码的问题比较好解决了。 样本采集工具 这里我们采用wordpress的Really Simple CAPTCHA生成验证码的插件,之所以选择这个插件,一个是它的安装量很大,二个是...

1、PyCharm的下载、安装

PyCharm 是python编辑器中,比较顺手的一个。而且可以跨平台,在macos和windows下面都可以用。 (1)安装依赖-JDK 因为pycharm(python IDE)是用Java编写的,所以必须要安装JDK才可以运行。 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/...

Linux系统BTC挖矿傻瓜教程

【Linux系统BTC/比特币矿池挖矿方案一】cgminer矿池挖矿程序(Linux系统 比特币(BTC) 矿池挖矿/采矿/造币)cgminer矿池挖矿程序【查看这里有没有最新版】http://ck.kolivas.org/apps/cgminer/https://github.com/ckolivas/cgminer apt-get install bz...