0

MicrosoftSQLServerにデータを書き込むアプリケーションがあります。データベースの文字セットはCP1252であり、保存される受信データはUTF-8です。データにはCP1252に変換できない文字が含まれている可能性があり、挿入すると例外がスローされます。

データベース担当者は、次のように、データをCP1252に強制的にクランチする必要があると言いました。

some_value = some_value.encode('CP1252', 'replace')

しかし、SQLAlchemyは自動的に変換を行い、変換を強制する方法がわかりません。

engine = sqlalchemy.create_engine('mssql+pyodbc://...'
    encoding='CP1252',
    convert_unicode=True,
    )

一部の文字が欠落している場合でも、データを保存することが重要です。どうすればこれを実装できますか?この場合、私は多くのデータベースリフレクションを使用していることに注意してください。

4

1 に答える 1

1

問題はありません。

some_value = some_value.encode('CP1252', 'replace').decode('CP1252')

some_value実際には Unicode 文字列ではなく、生の UTF-8 データの場合:

some_value = some_value.decode("utf-8").encode('cp1252', 'replace').decode('cp1252')
于 2013-01-14T11:03:01.833 に答える