浅谈字符编码方式与python的中文编码(二)

浅谈字符编码方式与python的中文编码(二)

     python内部使用的是unicode编码,而经常在程序的开头要写上gbk,gb2312,utf8等,那这些编码是怎么转换成内部的unicode呢?

在python2.x中,unicode字符串需要在字符串前加u来表示,比如
str=u'汉字'
(而在python3.x中,unicode字符串已经是默认格式,因此不再需要加u,如果你加了u,会报语法错误)
 python默认将代码文件内容当作asci编码处理,但asci编码中不存在中文,因此抛出异常。
    解决问题之道就是要让python知道文件中使用的是什么编码形式,对于中文,可以用的常见编码有utf-8,gbk和gb2312等。只需在代码文件的最前端添加如下:
# -*- coding: utf-8 -*-

    但是,如果你在Windows控制台下运行此代码的话,虽然程序是执行了,但屏幕上打印出的却不是"汉"字。这是由于python编码与控制台编码的不一致造成的。Windows下控制台中的编码使用gbk。 解决办法一个是将源代码的编码也改成gbk,也就是代码第一行改成:

# -*- coding: gbk -*- (gbk也就是CP936)

     因为前面声明了是gbk编码的字符,编译器会自把“汉”字从gbk编码转换成UNICODE对象。运行时,控制台又会将UNICODE转换成对应的gbk编码,所以就可以显示“汉”了!

    另一种方法是保持源码文件的utf-8不变,而是在"汉"前面加个u字,也就是 s= u"汉"。u表示将后面跟的字符串以unicode格式存储。







你可能感兴趣的:(python,中文编码,ansi)