3

私がpymssql働いているDBに接続するためのラッパーを書きました。Unicode のデコード/エンコード エラーが発生しました。ソースでそれらを食い止めようとしています。

charset='latin1' or「iso-8859-1」を指定すると、次のエラーで接続が失敗します。

  File "pymssql.pyx", line 549, in pymssql.connect (pymssql.c:7672)
    raise OperationalError(e[0])
pymssql.OperationalError: (20017, 'DB-Lib error message 20017, severity 9:\nUnexpected EOF from the server\nDB-Lib error message 20002, severity 9:\nAdaptive Server connection failed\n')

DB エンコーディングは「latin1」のようです。

SELECT SERVERPROPERTY('Collation')

戻り値

SQL_Latin1_General_CP1_CI_AS

これは、Python の'latin1'.

私はこれを正しくやっていますか?間違ったコードを選択しましたか (つまり、latin1またはiso-8859-1?

4

3 に答える 3

1

私のシステムは「SQL_Latin1_General_CP1_CI_AS」照合設定も使用しており、「LATIN1」に接続しても、CHAR/VARCHAR 列の文字は依然としてマレンコード化されて返されます。

Microsoft のドキュメント on SQL Server Code Page Architectureによると、使用するコード ページは Windows-1252 です。

charset='WINDOWS-1252'inを使用するとpymssql.connect、正しい結果が得られます。

于 2018-05-11T09:56:49.970 に答える
1

入力内容にかなりのこだわりがあるようです。

入力を検討するcharset="ISO-8859-1"

于 2013-11-01T15:07:33.523 に答える