1

我正在使用 pyodbc 连接到 MS SQL 服务器数据库。我得到的错误如下

invalid byte sequence for encoding "UTF8": 0x93
HINT:  This error can also happen if the byte sequence does not match the  
encoding expected by the server, which is controlled by "client_encoding".

SQL 数据库使用 Latin1 编码,我使用带有 django 的 postgres,它需要 UTF8。

我对使用 pyodbc 很陌生,无法解决这个问题。我试图过滤成堆的谷歌搜索,但没有运气。一些帮助将不胜感激。

编辑

Postgres 数据库是该项目的主要数据库。我希望能够从 SQL Server 中提取数据。虽然这个过程不会经常进行......

发生错误的点来自于从 SQL Server db 读取

4

1 回答 1

3

您几乎没有给出任何线索,但一个合理的猜测是:

您需要使用正确的编码将 MS SQL Server 数据解码为 un​​icode,并且(不一定立即)将其编码为“UTF-8”以传输到 postgres。

是什么让您认为 SQL Server db 上使用的编码是latin1而不是cp125x?在 MS 产品上为真是latin1极不可能的。'\x93'当解码为(通常的嫌疑人)时,您的错误字节cp1252会给出 U+201C 左双引号,通常用于例如 MS Word 中,并且通常发现粘贴到最终以 db 结尾的数据中。解码为latin1产生 U+0093,这是一个神秘的控制字符,在实践中的使用与母鸡的牙齿一样罕见。

于 2011-03-22T22:53:09.613 回答