最近用python编写一个上报模块,主要是通过jar包进行上传操作,由于涉及到传入参数中有“中文”,则会导致脚本运行在windows下失败。下面记录一下涉及的问题:
核心代码如下:
ss = os.popen('java -jar %s %s %s %s %s %s %s %s' %(jarname,Viruspath,OS,MD5,VirusName,FamilyName,VariantName,Attribute.decode('utf-8').encode('gbk')))
其中
Attribute.decode('utf-8').encode('gbk')
为中文参数。
首先要介绍一下编码格式问题:
1、脚本本身定义为utf-8的编码格式
2、由于os.popen是运行在cmd控制台上的,而windows下的编码格式为gbk
3、所以利用decode('utf-8').encode('gbk')进行把utf-8格式转化为unicode,然后在把unicode转化为gbk格式
实际遇到的问题是:在windows平台下 ,通过decode('utf-8').encode('gbk')转化为 传入参数未乱码,导致无法执行
而在linux下,则不用涉及转化编码的格式,直接可以运行成功。
相关参考链接:https://blog.csdn.net/wyongqing/article/details/70410999