• Python中使用中文


    这个问题曾在我初学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)
  • 相关阅读:
    Git 远程操作详解
    Golang io标准库
    Golang strings标准库
    Go WebSocket 实现
    Golang Gorm零值数据更新小坑
    [Linux] 分区扩容
    即截即贴,推荐一个提升截图对比效率的工具Snipaste
    POI 替换 word 关键字并保留样式
    前端图片压缩与 zip 压缩
    ubuntu20更换内核
  • 原文地址:https://www.cnblogs.com/ldd215/p/5465981.html
Copyright © 2020-2023  润新知