在 FreeTDS 中使用 flask 和 mssql guid 的 Unicode 问题
Unicode issue using flask and mssql guids with FreeTDS
我有一个烧瓶应用程序,最近不得不开始使用 mssql 生成的 guid 作为主键(以前它只是整数)。 guid 是 latin-1 编码。另外,我没有使用 sqlalchemy。现在,当我尝试在 flask jinja2 模板中显示查询的 mssql guid 时,出现以下错误:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc1 in position 0: ordinal not in range(128).
我试过:
- 在 linux 主机上取消设置 LANG
- 在 FreeTDS 配置中强制使用 utf-8(这已经完成)
- 在 jinja 模板中转义
- 使用 python3,运气不好
- 从 pypyodbc 切换到 pyodbc3,但问题仍然存在
似乎没有任何效果。如果我导入 sys 并将解码设置为 utf-8,则错误将 ascii 替换为 utf-8,但 jinja 模板不会呈现 guid。
有什么想法吗?谢谢阅读。还要注意,我的开发环境在 windows 7 上,这个问题不会出现在那里。它仅在 linux 服务器上。
好吧,这感觉像是一个 hack,但由于我唯一一次使用这些 guid 是在我从数据库中读取它们时,我只是这样做了:
CAST(REC_GUID_ID as VARCHAR(36)) as REC_GUID_ID
现在它们的格式似乎一切都很好。
我有一个烧瓶应用程序,最近不得不开始使用 mssql 生成的 guid 作为主键(以前它只是整数)。 guid 是 latin-1 编码。另外,我没有使用 sqlalchemy。现在,当我尝试在 flask jinja2 模板中显示查询的 mssql guid 时,出现以下错误:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc1 in position 0: ordinal not in range(128).
我试过:
- 在 linux 主机上取消设置 LANG
- 在 FreeTDS 配置中强制使用 utf-8(这已经完成)
- 在 jinja 模板中转义
- 使用 python3,运气不好
- 从 pypyodbc 切换到 pyodbc3,但问题仍然存在
似乎没有任何效果。如果我导入 sys 并将解码设置为 utf-8,则错误将 ascii 替换为 utf-8,但 jinja 模板不会呈现 guid。
有什么想法吗?谢谢阅读。还要注意,我的开发环境在 windows 7 上,这个问题不会出现在那里。它仅在 linux 服务器上。
好吧,这感觉像是一个 hack,但由于我唯一一次使用这些 guid 是在我从数据库中读取它们时,我只是这样做了:
CAST(REC_GUID_ID as VARCHAR(36)) as REC_GUID_ID
现在它们的格式似乎一切都很好。