python - pyodbc 是如何确定编码的?

标签 python pyodbc sqlanywhere unixodbc

到目前为止,我已经将 Sybase SQL Anywhere 12 与 Python(和 Twisted)一起使用了几个星期,我什至可以正常工作。

只剩下一个烦恼:如果我使用自定义 Python 2.7.1(这是部署平台)在 CentOS 5 上运行我的脚本,我得到的结果是 UTF-8

如果我在我的 Ubuntu 盒子 (Natty Narwhal) 上运行它,我会在 latin1 中获取它们。

不用说,我更愿意用 Unicode 获取所有数据,但这不是这个问题的重点。 :)

两者都是 64 位盒子,都有自定义的 Python 2.7.1。使用 UCS4 和自定义构建的 unixODBC 2.3.0。

我在这里不知所措。我找不到任何相关文件。是什么让 pyodbc 或 unixODBC 在这两个盒子上表现不同?

确凿的事实:

  • python :2.7.1
  • 数据库:SQL Anywhere 12
  • unixODBC:2.3.0(2.2.14 的行为相同),使用相同的标志自行编译
  • ODBC驱动:原装Sybase。
  • CentOS 5 给我 UTF-8,Ubuntu Natty Narwhal 给我 latin1。

我的 odbc.ini 看起来像这样:

[sybase]
Uid             = user
Pwd             = password
Driver          = /opt/sqlanywhere/lib64/libdbodbc12_r.so
Threading       = True
ServerName      = dbname
CommLinks       = tcpip(host=the-host;DoBroadcast=None)

我只是通过使用 DNS='sybase' 进行连接。

TIA!

最佳答案

我无法告诉您为什么不同,但如果您将“Charset=utf-8”添加到您的 DSN,您应该会在两台机器上获得您想要的结果。

免责声明:我在 Sybase 从事 SQL Anywhere 工程工作。

关于python - pyodbc 是如何确定编码的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5884504/

相关文章:

python - 使用另一个 CSR 矩阵的列填充空的 CSR 稀疏矩阵并对其进行切片

python - 当 wsdl 不包含时如何设置 suds 架构位置

python - pyodbc 操作错误 08001 ssl 安全错误

python - 针对 Access 数据库的 pyodbc 查询出现 "Optional feature not implemented"错误

python - 设置 pyodbc 搜索 odbcinst.ini 文件的位置

mysql - Select查询的效率

python - 使用 Scrapy 发送此 FormRequest 后,Web 服务器返回 "500 Internal Server Error"

python - 如何在 Python 中有效地添加稀疏矩阵

c# - 更改c# WebReference url地址

mysql - MobiLink 同步脚本生成