使用带有FreeTDS的flask和mssql guids的Unicode问题

时间:2016-02-24 14:31:21

标签: python sql-server flask jinja2

我有一个烧瓶应用程序,最近不得不开始使用mssql生成的guid作为主键(以前它只是整数)。 guid是latin-1编码。另外,我没有使用sqlalchemy。现在,当我试图在烧瓶jinja2模板中显示查询的mssql guid时,我收到以下错误:

  

UnicodeDecodeError:'ascii'编解码器无法解码位置0中的字节0xc1:序数不在范围内(128)。

我试过了:

  • 在Linux主机上取消设置LANG
  • 在FreeTDS配置中强制使用utf-8(已经完成)
  • 逃离jinja模板
  • 使用python3,没有运气
  • 从pypyodbc切换到pyodbc3,但问题仍然存在

似乎没什么用。如果我导入sys并将解码设置为utf-8,则错误会更改ascii替换为utf-8,但jinja模板将不会渲染guid。

有什么想法?谢谢阅读。另外需要注意的是,我的开发环境是在Windows 7上,这个问题不会出现在那里。它只在Linux服务器上。

1 个答案:

答案 0 :(得分:0)

嗯,这感觉就像一个黑客,但是因为我唯一一次使用这些guid是我从数据库中读取它们时,我只是这样做了:

CAST(REC_GUID_ID为VARCHAR(36))为REC_GUID_ID

现在他们采用的格式似乎一切都很好。