数据库oracle11g,字符集US7ASCII,python3各种设置都试过了,始终无法解决乱码问题。oracle乱码的解决办法是使用自带的函数rawtohex或utl_raw.cast_to_varchar2,能从oracle中读取数据,但在数据库中插入的数据为英文或字符。
【解决办法-比较繁琐,有一个需求就得写一个存储过程】
以python调用oracle存储过程的方式向oracle插入中文字符。
数据库存储过程
create or replace procedure eng2ch(
inn in varchar2
) is
begin
insert into pythontest(chinese,english) values(utl_raw.cast_to_varchar2(inn),'a');
commit;
end eng2ch;
python程序
--------连接数据库(略)--------
a='发生的发撒打发zz法副食店'
b=encode('GBK')
c=b.hex.upper()
cursor.callproc('eng2ch',[c])
conn.commit()
cursor.close()
conn.close()
调用存储过程
declare
a varchar(200);
b varchar(200);
begin
a:='XXXX';
b:='index';
eng2ch(a,b);
end;