关于Python编码,超诡异的,我也是醉了

  Python的编码问题,真是让人醉了。最近碰到的问题还真不少。比如中文文件名.csv 。python对外呈现不一致啊,感觉好不公平。

  没图说个JB,下面立马上图。

   

  我早些时候的其他脚本,csv都是中文命名的,都没有出现这些问题。现在都还能跑。

  

  再次回头看以前的脚本,以前的脚本是这么写的

      with open(parent_DIR + r" estdata\投资申请.csv","rb+") as csvfile:​

      问题1已解决。

  更离谱的是同一段代码往同一个csv文件写中文内容,前面的竟然能正确显示,后面的竟然是乱码!!!

  

  问题2,已解决。解决方案如下:

  根据这个,修改过后的代码如下:

def execRequestTestCase(url,args,requestmethord ="post"):
    import copy

    testCase = args["testCase"]
    assertion = args["assertion"]
    del args["testCase"]
    del args["assertion"]
    testData =copy.deepcopy(args)

    if "post" in requestmethord:
        testResultDetail =requests.post(url,args).content
    if "get" in requestmethord:
        if args.has_key("id"):
            url =url + args["id"]
            del args["id"]
        argsstr = ""
        if len(args):
            argsstr = "?"
        for k,v in args.items():
            argsstr =argsstr + k + "=" + v + "&"
        argsstr = argsstr[0:len(argsstr)-1]
        testResultDetail =requests.get(url + argsstr).content
        testCase =testCase.decode("GBK")
    testResult ="FALSE"
    if assertion in testResultDetail:
        testResult ="PASS"
    return dict(testCase =testCase ,testData =testData, assertion = assertion,testResultDetail=testResultDetail,testResult=testResult)

  原来还和get或post 有关,原来代码未走get的逻辑时一切正常,当走过get的逻辑后,汗,操作系统的编码竟然被更改了。。哎呦,这超诡异的。

  最近,我读过一篇文章讲述python编码的。讲得很清楚,http://www.ituring.com.cn/article/61192

原文地址:https://www.cnblogs.com/yicaifeitian/p/5359965.html