我正在使用pyodbc连接到MS SQL Server数据库。我得到的错误是以下
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编码的,而我正在将PostgreSQL与django一起使用,期望使用UTF8。
我对使用pyodbc非常陌生,无法解决此问题。我试图过滤通过大量的谷歌搜索,但没有运气。一些帮助将不胜感激。
编辑
Postgres数据库是项目的主要数据库。我希望能够从SQL Server中提取数据。不过,此过程不会经常执行...
发生错误的位置是从SQL Server数据库中读取的
最佳答案
您几乎没有提供任何线索,但合理的猜测是:
您需要使用正确的编码将MS SQL Server数据解码为unicode,并且(不一定立即)将其编码为“ UTF-8”,以传输到Postgres。
是什么让您认为SQL Server数据库上使用的编码是latin1
而不是cp125x
?在MS产品上真正的latin1
可能性很小。当您将错误的字节'\x93'
解码为cp1252
(通常是可疑的)时,会给出U + 201C左双引号,例如MS Word,通常被发现粘贴到以db结尾的数据中。解码为latin1
会生成U + 0093,这是一些奥术控制字符,在实践中其用法与母鸡的牙齿一样罕见。