我从 Python 2.7 连接到 Oracle 数据库。当我使用:
cursor.execute("SELECT column1 FROM table").fetchall()]
我为 column1 获得了几乎正确的值,因为所有波兰语字符(“ęóąśłżćń”)都转换为 ascii 一个(“eoaslzcn”)。使用 SQLDeveloper 之类的另一个工具并使用相同的选择语句,我得到了正确的值。
我从 Python 2.7 连接到 Oracle 数据库。当我使用:
cursor.execute("SELECT column1 FROM table").fetchall()]
我为 column1 获得了几乎正确的值,因为所有波兰语字符(“ęóąśłżćń”)都转换为 ascii 一个(“eoaslzcn”)。使用 SQLDeveloper 之类的另一个工具并使用相同的选择语句,我得到了正确的值。
尝试将环境变量设置NLS_LANG
为您的数据库语言字符串,例如
os.environ['NLS_LANG'] = 'POLISH_POLAND.EE8MSWIN1250'
@Mark Harrison - 非常感谢!有用!我做了一个确切的说明:
我在 Oracle 中检查了什么是语言:
SELECT USERENV ('language') FROM DUAL
回应是:
POLISH_POLAND.UTF8
然后我在 Python 中更改了 NLS_LA 值:
os.environ['NLS_LANG'] = 'POLISH_POLAND.UTF8'
使用
print "%s, %s" % (name, surname)
和 "> file.txt" 在命令行中我在 utf8 中获得了一个(正确的)文件。