python 汉字编码问题

问题描述:我要判断的两个字符串是否相等(‘区站号’==‘区站号’),第一个值是我从txt文件导入的数据,第二个值是我自己定义的并使用decode('utf-8')得到的,如果你用print函数打印这两个变量,则都是‘区站号',但是if语句判断,这两个值是不相等的。用直接显示的方式,u'u533au7ad9u53f7' 和 u'ufeffu533au7ad9u53f7'的区别。可以使用下述方法解决。

引用:http://blog.chinaunix.net/uid-7208369-id-2658427.html

原来,某些软件,如notepad,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。
因此我们在读取时需要自己去掉这些字符,python中的codecs module定义了这个常量:
# coding=gbk
import codecs
data = open("Test.txt").read()
if data[:3] == codecs.BOM_UTF8:
 data = data[3:]
print data.decode("utf-8")
结果:abc中文和

原文地址:https://www.cnblogs.com/arcserver/p/6606172.html