• UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)


    #coding=utf-8
    
    from selenium import webdriver
    import unittest,time
    import sys
    
    #在27 28行中调试 获取网页title
    # reload(sys)
    # sys.setdefaultencoding('utf-8') 
    
    class MyTest(unittest.TestCase):
        def setUp(self):
            self.driver = webdriver.Chrome()
            self.driver.maximize_window()
            self.driver.implicitly_wait(10)
            self.base_url = "http://www.youdao.com"
    
    
        def test_youdao(self):
            driver = self.driver
            driver.get(self.base_url + "/")
            driver.find_element_by_name("q").clear()
            driver.find_element_by_name("q").send_keys("webdriver")
            driver.find_element_by_id("border").click()
            time.sleep(2)
            title = driver.title
            # print (title.decode('utf-8')).encode('gb2312')
            # print title
            self.assertEqual(title,u"有道首页")
    
        
        def tearDown(self):
            self.driver.close()
    
    
    if __name__ == '__main__':
        unittest.main()

    如果 29行的title不对 会报错 

    结果报了如下的错误:

    UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
     

    然后在代码前使用了:

    import sys
    reload(sys)

    sys.setdefaultencoding('utf-8') 

    这个编码设置,运行依然报如上错误。

    从输出看,解码是没问题的,反而是编码出了问题,应该是当前环境下print时候编码出的问题

    于是,将代码改为:

    print (title.decode('utf-8')).encode('gb2312')

    结果没问题了。

    所以在使用 print 的时候,要注意环境所需的编码。 

  • 相关阅读:
    java中异常的处理
    java中异常的处理
    python入门(一)
    logstash urldecode filter 插件
    logstash urlencode解码
    go get下载第三方包问题的解决
    饿了么这样跳过Redis Cluster遇到的“坑”
    Installation Guide 安装指南
    python pip 切换到阿里云 镜像
    守得云开见月明:一次ASM存储高可用故障解决过程分析
  • 原文地址:https://www.cnblogs.com/Lam7/p/6635714.html
Copyright © 2020-2023  润新知