4

我在 ubuntu-10.10 上使用过 pymssql-1.0.2 和 freetds-0.82.7。另外,我在 windows-7 上有一个 mssql2008 服务器。我可以使用 pymssql 和 freetds 从 ubuntu 连接 mssql。但我无法从 mssql 数据库中获取 unicode 数据。数据库排序规则是 Cyrillic_General_CI_AS。

我的 freetds.conf 文件如下所示:

[mssql2008]
    host=10.0.0.34
    port=1433
    tds version=7.0

我的代码如下所示:

   conn = pymssql.connect(host=10.0.0.34\mssql2008, user=***, password=***, database=eoffice, as_dict=true, charset='iso-8859-1')
   crms = conn.cursor()
   crms.execute('SELECT cc_Name FROM tblHR_CodeClass')
   for row in crms.fetchall():
      raise u"Succeeded! Test data: " + row['cc_Name']
      break

预期结果是:“Өмнөговь аймаг” 实际结果是:“ªìíºãîâü àéìàã”

当我使用“UTF-8”字符集时,fetchall() 调用会引发错误,这意味着 utf8 无法读取超出代码页范围的数据。

如何获取存储在 mssql 数据库中的 unicode 数据?请伸出你的手!

问候, 奥吉尔

4

1 回答 1

2

它真的是 Unicode 数据吗?即,cc_Name 列是varchar 还是nvarchar?听起来像是 varchar——在这种情况下,请尝试使用 cp1251 或 windows-1251 作为字符集,而不是 iso-8859-1。

于 2011-02-25T08:09:45.450 回答