Python Unicode编码错误';拉丁语-1';编解码器可以';t编码字符'\u2019&x27;

Python Unicode编码错误';拉丁语-1';编解码器可以';t编码字符'\u2019&x27;,python,mysql,csv,unicode,Python,Mysql,Csv,Unicode,我正在尝试从MySQL RDB创建一个CSV数据,以将其移动到Amazon Redshift。但是,其中一个字段包含说明,其中一些说明包含“”字符或右单引号。在我运行代码之前,它会给我 UnicodeEncodeError: 'charmap' codec can't encode character '\x92' in position 62: character maps to <undefined> 但是,这给了我一个错误: UnicodeEncodeError: 'lati

我正在尝试从MySQL RDB创建一个CSV数据,以将其移动到Amazon Redshift。但是,其中一个字段包含说明,其中一些说明包含“”字符或右单引号。在我运行代码之前,它会给我

UnicodeEncodeError: 'charmap' codec can't encode character '\x92' in position 62: character maps to <undefined>
但是,这给了我一个错误:

UnicodeEncodeError: 'latin-1' codec can't encode character '\u2019' in position 132: ordinal not in range(256)

我注意到132是SQL语句中右单引号的位置,所以我认为代码本身可能有问题。我尝试在REPLACE语句中使用常规的直撇号而不是右单引号,但是这并没有替换字符,仍然返回原始错误。有人知道它为什么不接受单引号以及如何修复它吗?

\u2019
是Unicode for
,UTF-8 hex
E28099
,它是一个“右单引号”。直接拉丁语1等价物为十六进制
92
。一些字处理产品使用它代替撇号(

您收到错误消息,不是因为您无法处理字符,而是因为配置无法声明在何处使用了哪种编码

“132”似乎无关紧要:
132 84 E2809E„

Python注释:
关于其他字符集问题的说明:


在不知道模式或Python配置的情况下,我不能说得更具体。

为什么要引用
cur.execute(“
”),它只能读取
cur.execute(“
cur.execute>字符串中的其他双引号也是不允许的(它会将它们视为字符串的结尾)。数据库表是否有编码为拉丁-1的文本,但不知何故包含非拉丁-1字符?旁注:此代码无论如何都会中断;
'O:\file\path\to\file\u name.csv'
实际上是(为了清楚起见,在尖括号中命名了特殊字符)
O:ile\pathile\u name.csv
。这就是为什么您总是在Windows路径中使用原始字符串,例如
r'O:\file\path\to\file\u name.csv'
(注意
r
前面的开放引号)。您可能会在实际路径中侥幸逃脱(如果没有目录或文件名以响应
str
literal转义的字符开头),但这纯粹是运气;始终使用原始字符串,这样你就不会依赖运气。
UnicodeEncodeError: 'latin-1' codec can't encode character '\u2019' in position 132: ordinal not in range(256)