0

我有一个将数据写入 Microsoft SQL Server 的应用程序。数据库的字符集为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 回答