2

我正在使用 python 2.7jaydebeapiinformix jdbc driver (ifxjdbc.jar)在表上执行选择,所有字段都有u'some_text' 这是我的代码

curs = conn.cursor()
curs.execute("SELECT * FROM table1")
res = curs.fetchall()
print res

使用

res_final=[str(x) for x in res[0]]
print res_final

正确转换结果中的第一行。知道如何转换所有选定的行吗?我对 sqlite3 有同样的问题,但添加

conn.text_factory=str 

解决了我的问题。我找不到以相同方式工作的东西jaydebeapi.

4

1 回答 1

3

如果您绝对需要将 Unicode 值编码为字节串,请尽可能晚地这样做,例如,将值推送到只能处理字节的地方,如文件或网络套接字。

您可以使用嵌套列表理解对所有行中的所有列进行编码:

res = [col.encode('utf8') if isinstance(col, unicode) else col for col in row]
       for row in curs.fetchall()]

它仅以适用于所有 Unicode 代码点的方式对实际上是 Unicode 字符串的值进行编码。

但是,如果您只关心u''前缀,那么绝对不需要编码。不要将容器表示中的类型指示符与实际数据混淆。

于 2014-12-06T18:55:11.537 回答