Python 强制字符集转换

Python 强制字符集转换,python,character-encoding,sqlalchemy,Python,Character Encoding,Sqlalchemy,我有一个将数据写入Microsoft SQL Server的应用程序。数据库的字符集是CP1252,要保存的传入数据是UTF-8。数据可能包含无法转换为CP1252的字符,插入时将引发异常 数据库人员说,我应该强制将数据压缩到CP1252,如下所示: some_value = some_value.encode('CP1252', 'replace') 但是SQLAlchemy会自动进行转换,我看不到强制转换的方法 engine = sqlalchemy.create_engine('mssq

我有一个将数据写入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,
    )
保存数据非常重要,即使缺少一些字符。我如何实现这一点?请注意,在这种情况下,我使用了大量数据库反射。

我看不出有问题

some_value = some_value.encode('CP1252', 'replace').decode('CP1252')
如果
某些值实际上不是unicode字符串,而是原始UTF-8数据:

some_value = some_value.decode("utf-8").encode('cp1252', 'replace').decode('cp1252')

我建议您切换数据库的编码,而不是只是到处乱扔数据,而不关心数据到达何处以及是否全部获得。遗憾的是,数据库不在我手中,无法以任何方式进行修改。没错,您可以这样做。我想在SQLAlchemy中“修复”这个问题,这样我就不必手动转换代码库中任何地方的每个值。@eclaird我以为你说的是传入数据?