【问题标题】:Pymssql, How to use it to read unicode data from MSSQL2008Pymssql,如何使用它从 MSSQL2008 读取 unicode 数据
【发布时间】:2011-07-03 06:02:09
【问题描述】:

我在 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 数据? 请伸出你的手!

问候, 奥吉尔

【问题讨论】:

    标签: python sql-server unicode freetds pymssql


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回答。 cc_Name 是 NVARCHAR 列。
    • 一个非常古老的答案,但在 2016 年仍然有用!这让我困惑了一段时间,因为我的字符集不是 unicode,但我无法从我的 pymssql 查询中得到正确的翻译。谢谢。
    猜你喜欢
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 2016-04-01
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多