zoukankan      html  css  js  c++  java
  • 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 的时候,要注意环境所需的编码。 

  • 相关阅读:
    WCF学习笔记
    下拉框层级绑定
    js在IE可以运行,在Firefox 不运行
    ajax 基础
    Asp.net Mvc Web Api 学习(一)
    阅读暗时间的笔记与心得
    阅读暗时间的心得与笔记
    阅读暗时间的笔记与心得(结束篇)
    阅读暗时间的笔记与心得
    阅读暗时间的心得与笔记
  • 原文地址:https://www.cnblogs.com/Lam7/p/6635714.html
Copyright © 2011-2022 走看看