zoukankan      html  css  js  c++  java
  • python 连接 Oracle 乱码问题(cx_Oracle)

    用python连接Oracle是总是乱码,最后发现时oracle客户端的字符编码设置不对。

    编写的python脚本中需要加入如下几句:

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

    这样可以保证select出来的中文显示没有问题。

    要能够正常的insert和update中文,还需要指定python源文件的字符集密码和oracle一致。

    # -*- coding: utf-8 -*-

    ------------------------------------------------------------------------------- 

    例子:

    # -*- coding: utf-8 -*-
    
    import os
    os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'  #或者os.environ['NLS_LANG'] = 'AMERICAN_AMERICA.AL32UTF8'
    
     
    
    import cx_Oracle
    db = cx_Oracle.connect(username/passwd@host:port/sevicename)
    cursor = db.cursor()
    #其他操作
    
    db.commit()
    db.close()

    参考:

    客户端的NLS_LANG设置及编码转换

          ①在Oracle客户端向服务器端提交SQL语句时,Oracle客户端根据NLS_LANG和数据库字符集,对从应用程序接传送过来的字符串编码进行转换处理。如果NLS_LANG与数据库字符集相同,不作转换,否则要转换成数据库字符集并传送到服务器。服务器在接收到字符串编码之后,对于普通的CHAR或VARCHAR2类型,直接存储;对于NCHAR或NVARCHAR2类型,服务器端将其转换为国家字符集再存储。

          ①在Oracle客户端向服务器端提交SQL语句时,Oracle客户端根据NLS_LANG和数据库字符集,对从应用程序接传送过来的字符串编码进行转换处理。如果NLS_LANG与数据库字符集相同,不作转换,否则要转换成数据库字符集并传送到服务器。服务器在接收到字符串编码之后,对于普通的CHAR或VARCHAR2类型,直接存储;对于NCHAR或NVARCHAR2类型,服务器端将其转换为国家字符集再存储。

  • 相关阅读:
    中断API之enable_irq
    XML和Schema命名空间详解
    “低头”时代,会不会就此终结?
    巨型冰山惊现格陵兰,好莱坞大片场景上演
    半世纪以来最佳英文小说:《英国病人》
    线程锁(互斥锁Mutex)
    Python GIL(Global Interpreter Lock)
    黑暗中的生物:利用奇技淫巧快活生存
    “人工智能”造假:只有人工,没有智能
    克罗地亚:输了世界杯,却赢了全世界
  • 原文地址:https://www.cnblogs.com/chenjianhong/p/4144399.html
Copyright © 2011-2022 走看看