python ibm-db 失败 UnicodeDecodeError: 'utf-8' codec can't decode byte: invalid continuation byte

时间:2020-12-22 21:54:38

标签: python-3.x utf-8 ibm-midrange db2-400

python 脚本在 IBM i 上运行并使用 ibm-db 访问 IBM i 上的本地 DB2 数据库

python 3.6.9 & ibm-db 2.0.5.9

<块引用>

DB2 默认编码 (CCSID) 是 37 & python 是 'utf-8'

突然间,python 脚本开始在 1 个盒子上失败。相同的 python 脚本正在其他盒子上工作,所以我怀疑数据或环境设置问题。这不是数据问题,因为当 python 使用不同的 db 包 pyodbc 访问 Windows 上的相同数据时,它会起作用。这不是 env 设置问题,因为 python 版本和第 3 方软件包版本与其他工作盒匹配。

代码片段:

    row = ibm_db.fetch_row(stmt)
    while(row):
        transactions = []
        prvStrmName = ibm_db.result(stmt, 'STRMNAME') # failing here
        strmId = ibm_db.result(stmt, 'STREAMID')
        prvStrmId = strmId

我尝试将其编码为“utf-8”,但没有帮助。

<块引用>

prvStrmName = ibm_db.result(stmt, 'STRMNAME').encode('utf-8')

不知道哪里出了问题。我会很感激任何帮助/指示吗?

2020-12-22 11:17:44,959 - root - ERROR - 'utf-8' codec can't decode byte 0xdd in position 38: invalid continuation byte
Traceback (most recent call last):
  File "voianalytics.py", line 170, in <module>
    summarize_income_stream(stmt)
  File "voianalytics.py", line 69, in summarize_income_stream
    prvStrmName = ibm_db.result(stmt, 'STRMNAME')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xdd in position 38: invalid continuation byte

ibm_db.client_info(conn) 在 IBM i 上的结果是:

DRIVER_NAME: string(13) "QSQCLI.SRVPGM"
DRIVER_VER: string(5) "07030"
DATA_SOURCE_NAME: string(8) "XXXXXXXX"
DRIVER_ODBC_VER: string(4) "3.00"
ODBC_VER: string(0) ""
ODBC_SQL_CONFORMANCE: string(4) "CORE"
APPL_CODEPAGE: int(1208)
CONN_CODEPAGE: int(1208)

0 个答案:

没有答案