4

Python 2.6 から SQL Server 2008 のフィールドを取得したいと考えています。これが私の freeTDS .conf ファイルです。

[ARGSERVER03]
    host = 192.168.1.3
    port = 1433
    tds version = 7.0

コードは次のとおりです。

conn = pymssql.connect(host='192.168.1.3', user='****', password='****', database='TrafficMonitor', as_dict=True, charset='UTF-8')
i = 0
cur.execute('SELECT * FROM dbo.tblTrafficCounterData')
while i < 10:
    car = cur.fetchone_asdict()
    if car is None:
        break
    c = car['Class']
    print c
    i = i + 1

しかし、それは与えます:

UnicodeDecodeError: 'utf8' codec can't decode byte 0xd3 in position 0: invalid continuation byte

Unicode フィールドはペルシア語です。トレースバックは行用ですcar = cur.fetchone_asdict()

[編集]

SQL Server Management Studio のデータベース プロパティでデータベースの照合順序を確認しましたが、次のとおりです。

Arabic_CI_AS

しかし、それを charset で使用すると、次のようになります。

LookupError: unknown encoding: Arabic_CI_AS
4

1 に答える 1

4

SQL Server が UTF-8 を使用していると確信していますcharset='UTF-8'か ( で示されます)。通常、私が遭遇したほとんどの SQL Server インスタンスは、cp1252 (米国) などの Microsoft エンコーディング (UTF-8 ではない) を使用しています。

正しいエンコーディングを見つけるのに役立つかもしれないいくつかのこと:

SELECT DATABASEPROPERTYEX('dbname', 'Collation') SQLCollation

于 2012-04-04T13:14:03.820 に答える