python邮件乱码问题
‘壹’ python中文乱码解决
windows下的文件路径,cmd窗口等默认编码都是gbk
但在windows下编写python程序的时候,我们一般采用的编码是utf-8
二者不一致是导致乱码的根本原因!
在pycharm下,为了中文不乱码,那么需要注意一下几个方面:
一、每一个源程序文件头部,需要加上
#-*-coding:utf-8;-*-
这样就没有乱码了
‘贰’ python 发邮件乱码的几种解决方法
打开python的Lib文件夹下的mimetypes.py文件,找到大概256行的
‘default_encoding=sys.getdefaultencoding()’。
在这行前面添加三行,并且注释4行代码
#try:
#ctype=ctype.encode(default_encoding)#omitin3.x!
#exceptUnicodeEncodeError:
#pass
else:
yieldctype
i+=1
ifsys.getdefaultencoding()!='gbk':
reload(sys)
sys.setdefaultencoding('gbk')
default_encoding=sys.getdefaultencoding()
‘叁’ Python中中文乱码问题
a ='哈哈'
b = a.encode('utf-8')
以上你的代码是UTF8编码吧,a本来就是UTF8编码,你在给它编码干嘛,encode是编码,decode是解码,你不报错没天理。
a = u'哈哈'
b = a.encode('utf-8')
a是U编码类型也就是你上一个没加U的哈哈的解码,它肯定不会保存!
‘肆’ 用Python发邮件的时候,附件文件名如果是中文,接受到的总是乱码,如何解决谢大神解答!
'attachment; filename="中文.txt"'.decode('utf-8')
在每个python 的中文字符后面加.decode('utf-8')看看?
‘伍’ python 中文乱码问题
记事本是用utf-8保存你下载了东西的。你下载下来的不是utf-8,保存下来中文当然就乱码了。而gbk和utf-8里英文的编码值都一样,所以不受影响。
一个方法是你留意下目标页面的charset 和 contentType,另一个方法是你复制一个目标页面的字,放cmd里看它的编码长度,以此来判断它的原来编码。
‘陆’ Python为什么一运行就是乱码
可能是编码问题,开头加上coding:utf-8试试。
‘柒’ python异常乱码如何解决
如果页面是GB18030编码,而数据库是GBK编码,一般来说是不用转换的。GB18030是GBK的超级。GB18030本身兼容GBK,而GB18030中的部分字符GBK中是没有的。将GB18030字符写入GBK的数据库,只会丢失部分字符而已。一般网页上不会出现罕见的字符,所以这种情况是无需处理的。
所以,请仔细核对页面和数据库的编码。
即使你提供的页面、数据库编码是正确的,而且一定要转换,也应该这样做:
s='GB18030字符串'
s=s.decode('GB18030')#转化为unicode
s=s.encode('GBK')#转化为GBK
‘捌’ python发送邮件,网页接收正常,Foxmail附件乱码
应该是编码的问题……说不定发送英文或者数字的能够正常呢?
好吧,其实我也不太清楚
不过我关注的不是这个,而是放在文件夹下的方法太蛋疼了。
弄个拖动的吧,这样就可以放在%userprofile%\AppData\Roaming\Microsoft\Windows\SendTo文件夹下,直接“发送到”了,getfile用于接收文件路径。
try:
#得到拖动的文件路径
getfile = sys.argv[1]except Exception, e:
#用正常方式打开
getfile = raw_input('输入完整路径获取附件(拖动文件到控制台窗口):')filename = os.path.basename(getfile) #从路径获取文件名
对了,别忘记把.py后缀改成.pyw,消除黑色窗口……
还有弄个
import ctypes#……#结束后弹出提示对话框text = filename + '\n' + 'Successfully sent to ' + msg['to']ctypes.windll.user32.MessageBoxA(0, text, '', 0)#……
来吧,可劲地折腾吧。
‘玖’ python 乱码问题
解决方法:
1.直接使用 u'是' 形式,指明以unicode编码,解码方式会以顶部 #coding定义的编码方式,如果不写,以操作系统当前编码方法,建议写上#coding,因为要让操作系统编码和源文件编码经常会不一样。推荐使用这种方式
2.输出时指定解码方法 print '是'.decode("utf8") ,必须和保存的编码一致,忽略#coding的定义
3.将#coding 和保存编码改为和操作系统一样的编码,就可以直接print '是' 正常输出,也不推荐,因为需要事先知道操作系统编码,复制到其他电脑上,操作系统编码不一样就会出错
#coding=gbk
print u'是' #方法1
print '是'.decode("gbk") #方法2
print '是' #方法3
注意:
#coding指明的编码必须和保存的编码一样,不然1,3方法都会产生错误,原因也是保存编码和读取编码不一致。一般IDE能够自动根据#coding保存文件
‘拾’ python 收取邮件都是乱码。
一般邮件在传输的时候都会被编码,图中的是base64编码的特征,这类编码是可逆的,只需要进行base64解码即可,python有个base64模块,可以用来编码和解码。