python

今天写pytho脚本时遇到几个基础问题,在此记录下
1 中文字符输出
一个print打印中 含有英文和中文字符,因为中文编码问题,print报错 ascii code cant decode byte 0xef in position 0

python字符串分byte str 和unicode str两种,指定编码方式为UTF8,则所有中文字符串都认为是byte str 而函数中产生字符串是unicode str 两者混合输出时就会导致中文字符问题

有两个解决方案
1)将字符串转成byte str
(“你好"+self.request.get(“argu”).encode(“utf-8”))
2)将字符串转成unicode str
(u“你好"十self.request.get(“argu"))

脚本输出本地英文字符 十 mysql 获取中文字符(mysql字符集是utf8) OK
本地中文十mysqL结果 产生报错
解决方式参照上面2)

自己模仿本地中文十自定义函数返回字符 也没有编码问题,难道是接口函数才有这问题?

附录:
decode encode
str ---------> str(Unicode) ---------> str

u = '中文' # 指定字符串类型对象u
str1 = u.encode('gb2312') # 以gb2312编码对u进行编码,获得bytes类型对象
print(str1)
b'\xd6\xd0\xce\xc4'
str2 = u.encode('gbk') # 以gbk编码对u进行编码,获得bytes类型对象
print(str2)
b'\xd6\xd0\xce\xc4'
str3 = u.encode('utf-8') # 以utf-8编码对u进行编码,获得bytes类型对象
print(str3)
b'\xe4\xb8\xad\xe6\x96\x87'
u1 = str1.decode('gb2312') # 以gb2312编码对字符串str进行解码,获得字符串类型对象
print('u1')
'中文'
u2 = str1.decode('utf-8') # 报错,因为str1是gb2312编码的
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6 in position 0: invalid continuation byte

2 换行问题
print 后 带 , 不会自动换行

3 in匹配
opt in ('proxyaa','proxyb') #全字符串匹配
opt in('proxyaa') #子串匹配
if opt == proxy 会匹配到opt in('proxyaa') 子串

你可能感兴趣的:(python)