中国领先的IT技术网站
|
|

Python oracle数据库操作时,中文查询报错

python中使用oracle数据库进行查询时,出现下面的错误:UnicodeEncodeError: 'ascii' codec can't encode characters in position 54-57: ordinal not in range(128) 错误定位是在cur.execute(sql)进行查询的这句。

作者:Ge__来源:36大数据|2017-11-29 13:11

开发者大赛路演 | 12月16日,技术创新,北京不见不散


Python oracle数据库操作时,中文查询报错

python中使用oracle数据库进行查询时,出现下面的错误:

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

错误定位是在cur.execute(sql)进行查询的这句。

因为提示编码问题,一直在折腾编码,各种断点加下来,其实语句本身并没有发生乱码,而且因为使用的python3.x,默认已经是utf-8编码,不该出现这样的问题啊。。

各种查,把网上各种改编码的方法试了一下遍。。

最后发现搜索方式不对..最后的最后终于找到了,是oracle的一个环境变量没有配。

windows下可以参考:

添加变量名:NLS_LANG

添加变量值:SIMPLIFIED CHINESE_CHINA.UTF8

Mac下可以直接在数据库操作的文件顶部添加,给oracle设置字符集。

  1. import os 
  2.  
  3. os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8' 

大功告成!!

【编辑推荐】

  1. 手把手带你,用Python写一个Monkey自动化测试脚本!!!
  2. 关于Python数据分析的入门指南
  3. 机器人研发热门语言:不死Java、不朽C/C ++、新贵Python
  4. 从Zero到Hero ,一文掌握Python
  5. 为什么做AI的都选Python?
【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

构件中国:面向构件的方法与实践

本书通过丰富的案例研究示例,阐明了构建面向构件软件的最重要因素:概念、技术、规范、管理以及分析与设计过程。 本书的涵盖范围包括:面...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊