【如何计算汉字字符串的长度】
s=u"我的"
print(s.encode('utf-8')) # utf-8环境汉字长度是以字为单位,print的时候必须编码为非unicode字符
【unicode字符】
unichr(11) # 将十进制的11转换为unicode字符 u'\0x0b',调试状态下 其作为dict的value显示空格,作为key时显示u'\0x0b'。
【print中文】
print str(u'你们') # 错误, str函数适用于非unicode,比如str('你们')
print u'你们' # 非控制台下面错误,print用ascii转换unicode,必须先以utf8编码,即 print(u'你们'.encode('utf8'))
>> print u'你们' # 控制台下面是正确的,原因未知,但是可以肯定的时候在控制台python是用utf8进行转码
【如何在代码中直接打印unicode】
print u'你们' + unicode('我的', encoding='utf8') # 中文必须先转换unicode之后串接
或者
reload(sys)
sys.setdefaultencoding("utf-8") # python默认是以ascii进行编解码,跟"coding: UTF-8 "头无关
print u'你们' + '我的' # 这样就可以混合串接打印,python会自动以utf-8编码方式先将"我的"转unicode,后一起encode
所以在python2.7中,setdefaultencoding()非常重要,可以避免很多编码错误。
【coding: UTF-8文件头】
没有文件头的时候 a=u'我' 显示乱码,print '我' 正常;所以暂时来看主要影响unicode,当然可能也跟运行的操作系统环境有关。