我有一个从Oracle DB加载一些数据的应用程序。它可以包含捷克字符。当我创建这样的连接时:
conn = cx_Oracle.connect(job_conn_string, encoding="UTF-8", nencoding="UTF-8")
字符串
或者是
conn = cx_Oracle.connect(job_conn_string, encoding="utf-8", nencoding="utf-8")
型
然后我得到了错误
“utf-8”编解码器无法解码位置87中的字节0xfd:无效起始字节
但当我建立这样的联系时:
conn = cx_Oracle.connect(job_conn_string, encoding="utf8", nencoding="utf8")
型
或者是
conn = cx_Oracle.connect(job_conn_string, encoding="UTF8", nencoding="UTF8")
型
一切正常。
这怎么可能?UTF-8/utf-8 和 UTF8/utf8 不能互换是不是很常见?区别就在 Jmeter 板上?
编辑:
当我在游标中执行循环时发生错误。当出现带有捷克字符的行时,它会引发异常。完整的错误是:
UnicodeDecodeError('utf-8',b'"ORA-29902:执行例程ODCIIndexStart()时出错ORA-20004:84 ORA-06512:在“SDE.ST_GEOMETRY_SHAPELIB_PKG”,第12行ORA-06512:在“SDE.ST_GEOMETRY”,第55行ORA-06512:在“SCHEMA:TABLE”,第9行ORA-06512:第2行“",第9行ORA-06512:na line 2\n',87,88,'invalid start byte')
1条答案
按热度按时间frebpwbc1#
使用以下查询检查有效的字符集名称:
字符串
请注意,Oracle字符集
UTF8
不是Unicode字符集UTF-8。UTF8
在Oracle中的意思是CESU-8。只要您使用基本多语言平面,即U+FFFF以下的字符,与UTF-8相同UTF-8的Oracle字符集是
AL32UTF8