【问题标题】:Unicode issue using flask and mssql guids with FreeTDS在 FreeTDS 中使用烧瓶和 mssql guid 的 Unicode 问题
【发布时间】:2016-02-24 14:31:21
【问题描述】:

我有一个烧瓶应用程序,它最近不得不开始使用 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,错误会改变用 utf-8 替换 ascii,但 jinja 模板不会呈现 guid。

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

【问题讨论】:

  • 您是否尝试过其他驱动程序? pymssql 似乎比其他一些更好地处理 unicode。

标签: python sql-server flask jinja2


【解决方案1】:

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

CAST(REC_GUID_ID as VARCHAR(36)) as REC_GUID_ID

现在它们的格式看起来一切都很好。

【讨论】:

    猜你喜欢
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多