【问题标题】:Encoding issue for " Unicode Character “ü” " while reading it from Oracle db using CX_Oracle and Pandas使用 CX_Oracle 和 Pandas 从 Oracle db 读取“Unicode 字符“ü””时的编码问题
【发布时间】:2020-09-26 23:46:40
【问题描述】:

我正在尝试读取数据框中的 Oracle 数据表输出,我需要将其与另一个数据框进行比较。

Oracle 的 str 值 Unicode 字符“ü”在数据框中显示为“u”。

我试过的代码:

import pandas as pd
import cx_Oracle

conn = cx_Oracle.makedsn(host='hostname', port='1521', service_name= 'SomeName')
sqlconn = cx_Oracle.connect( user='Username', password='$$$$$', dsn=conn)
sqlquery = "Select statement"
df2 = pd.read_sql(sqlquery, sqlconn)

print(df2)
**UBERX**,2003-10-01 00:00:00,I,N/A,Not Available

Expected 
**ÜBERX**,2003-10-01 00:00:00,I,N/A,Not Available

如果我将输出导出到 csv

df2.to_csv('/home/user/05June_1_ORA.csv', index=False)

在 Unix 中:

bash-4.2$ file -i *
05June_1_ORA.csv: text/plain; charset=us-ascii

此数据正在使用 csv 被提取到 oracle,其编码为 utf-8

sourcefile_05June_1.csv:     text/plain; charset=utf-8

请告诉我如何解决它。

【问题讨论】:

  • 您使用的是什么版本的 python 和 pandas?而且您确定 ü 字符在 SQL 数据库中?
  • Python 3.6.5 Pandas '0.23.0' 是 Oracle db 具有相同的值。

标签: python pandas oracle cx-oracle


【解决方案1】:

当您连接到数据库时,请确保您设置了编码。这将成为 cx_Oracle 8 中的默认设置,但现在,请执行以下操作:

sqlconn = cx_Oracle.connect(user='Username', password='$$$$$', dsn=conn,
        encoding="UTF-8", nencoding="UTF-8")

【讨论】:

  • 太棒了!很高兴它有帮助!
  • AnthonyTuinga 是 cx_oracle @Rohit 的制作人,据我所知 ...
  • 是的,我是。 :-)
猜你喜欢
  • 1970-01-01
  • 2012-07-17
  • 2012-11-12
  • 2021-10-06
  • 2014-02-15
  • 1970-01-01
  • 2021-03-27
  • 1970-01-01
  • 2011-01-09
相关资源
最近更新 更多