使用 CX_Oracle 和 Pandas 从 Oracle 数据库读取“Unicode 字符“ü””时的编码问题
Encoding issue for " Unicode Character “ü” " while reading it from Oracle db using CX_Oracle and Pandas
我正在尝试读取一个数据框中的 Oracle 数据 table 输出,我需要将其与另一个数据框进行比较。
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
请告诉我如何解决它。
当你连接到数据库时,确保你设置了编码。这将成为 cx_Oracle 8 中的默认设置,但现在,请执行以下操作:
sqlconn = cx_Oracle.connect(user='Username', password='$$$$$', dsn=conn,
encoding="UTF-8", nencoding="UTF-8")
我正在尝试读取一个数据框中的 Oracle 数据 table 输出,我需要将其与另一个数据框进行比较。
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
请告诉我如何解决它。
当你连接到数据库时,确保你设置了编码。这将成为 cx_Oracle 8 中的默认设置,但现在,请执行以下操作:
sqlconn = cx_Oracle.connect(user='Username', password='$$$$$', dsn=conn,
encoding="UTF-8", nencoding="UTF-8")