无法从oracle数据库中读取特殊字符

2024-04-26 02:38:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python从oracle数据库读取一些文本数据。其中我必须标记具有一些特殊字符的值,并根据其值将其更改为特定的值 有些名字有特殊字符,如ą、Ł等

而有些人正在被阅读。但ą被读取为A。因此,即使数据库中的数据值是特殊字符,我的python代码也不会标记它

我甚至尝试在连接数据库时使用encoding='iso-8859-1',但不是读取和显示字符,而是显示一个倒过来的问号

请帮助我理解python中的这些字符

我正在使用cx_Oracle连接到数据库。 DB中的列有一个值:Mąrią

在连接到db时不使用任何编码,python将此值读取为Maria。 但我希望它的形式与数据库中的形式相同 i、 e预期产出:Mąrią。 Bt如果我添加encoding='iso-8859-1'得到的输出是'M?ri'

import cx_Oracle
conn=cx_Oracle.connect('username','pwd','hostname/servicename')
c=conn.cusrsor()
sql='select name from con where id='123' #output of this in db is :Mąrią
z=pd.read_sql(sql,conn)

python输出:Maria

预期输出:与DB相同,即:Mąrią

如果我将连接更改为: conn=cx_Oracle.connect('username','pwd','hostname/servicename',encoding='iso-8859-1')

python中的输出:“M?ri?”

预期输出:与DB相同,即:Mąrią


Tags: 数据name标记数据库dbsqlisoconn
1条回答
网友
1楼 · 发布于 2024-04-26 02:38:53

不,你不能这样做。重新启动application时,创建一个新的timer。如果您想实现它,请尝试将状态存储在SharedPrefense

SharedPreferences sharedPreferences = getSharedPreferences("save",MODE_PRIVATE);

if(!sharedPreferences.getBoolean("opened",false)){
    //what you want do once
  SharedPreferences.Editor editor = sharedPreferences.edit();
  editor.putBoolean("opened", true);
  editor.apply();
}

相关问题 更多 >