在普通使用中感觉不到明显区别,但是在某些时候就会产生问题:
格式化字符串时
格式化字符串时,如果参数中包含unicode对象,那么格式化的结果也会为unicode对象。python会把整个字符串转为unicode编码,这个过程无法指定字符集,并且会使用ASCII,如果其中包含中文自然会报错。>>> “{0}”.format(u”编码”) # 报错>>> “{0}”.format(u”编码”.encode(“utf8”)) # 未报错,结果为utf8>>> “%s编码” %(u”test”) # 报错>>> “%s” %(u”编码”) # 未报错,结果为unicode在日常使用中,个人的建议是全部使用unicode,在最终需要格式化输出时,再根据情况转为utf8
urlencode参数时