在我正在处理的一个项目中,我的数据存储在 SQL Server 中,并具有排序规则Danish_Norwegian_CI_AS
。数据通过 FreeTDS 和 ODBC 输出到将数据作为 UTF-8 处理的 python。一些字符,如 å、ø 和 æ,编码不正确,导致项目进度陷入停滞。
我花了几个小时阅读有关编码、排序规则和代码页的令人困惑的世界,感觉我对整个图片有了更好的理解。
我读过的一些文章让我认为可以: 在 SQL select 语句中指定,排序规则数据在输出时应编码为 UTF-8。
我认为这是可能的原因是本文 https://technet.microsoft.com/en-us/library/ms179886(v=sql.110).aspx它展示了如何访问具有不同排序规则的表,以便更好地协同工作。
任何将排序规则转换为 UTF-8 / UTF-16 方向的指针,将不胜感激!
编辑:我读到 SQL Server 通过以下方式提供了 unicode 选项nchar
, nvarchar
and ntext
,以及其他字符串变量char
, varchar
and text
根据设定的排序规则进行编码。我还读到上面提到的 unicode 选项是用 utf-16 变体 ucs-2 编码的(我希望我没记错)。所以;为了让locale排序规则和unicode表发挥作用,应该有一个转换函数,不是吗?
4个月过去了,我终于找到了问题的答案。事实证明它与 FreeTDS 驱动程序或数据库排序规则无关:
这是pyodbc的connect函数,显然需要一个标志;unicode_results=True
发布在这里是为了帮助其他注定在黑暗中漫无目的地徘徊的不幸灵魂,寻找线索。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)