UnicodeEncodeError:“ascii”编解码器无法对位置 47 中的字符 u'\u2019' 进行编码:序数不在范围内(128)

2024-03-29

我正在使用 Python 2.7 和 MySQLdb 1.2.3。我尝试了在 stackoverflow 和其他论坛上找到的所有内容来处理我的脚本抛出的编码错误。 我的脚本从源 MySQL 数据库中的所有表中读取数据,并将它们写入 python 中StringIO.StringIO对象,然后加载该数据StringIO使用 psycopg2 库的 copy_from 命令将对象复制到 Postgres 数据库(显然是 UTF-8 编码格式。我通过查看 pgadmin 中数据库的属性 - 定义发现了这一点)。

我发现我的源 MySQL 数据库有一些表采用 latin1_swedish_ci 编码,而其他表采用 utf_8 编码格式(从 information_schema.tables 中的 TABLE_COLLATION 找到)。

我根据在互联网上的研究,在 Python 脚本的顶部编写了所有这些代码。

db_conn = MySQLdb.connect(host=host,user=user,passwd=passwd,db=db, charset="utf8", init_command='SET NAMES UTF8' ,use_unicode=True) 
db_conn.set_character_set('utf8') 
db_conn_cursor = db_conn.cursor()
db_conn_cursor.execute('SET NAMES utf8;')
db_conn_cursor.execute('SET CHARACTER SET utf8;')
db_conn_cursor.execute('SET character_set_connection=utf8;')

我仍然得到UnicodeEncodeError下面这一行:cell = str(cell).replace("\r", " ").replace("\n", " ").replace("\t", '').replace("\"", "") #Remove unwanted characters from column value,

UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 47: ordinal not in range(128)

我编写了以下代码行来在写入 StringIO 对象时清理源 MySQL 数据库每个表中的单元格。

cell = str(cell).replace("\r", " ").replace("\n", " ").replace("\t", '').replace("\"", "") #Remove unwanted characters from column value

请帮忙。


str(cell)正在尝试转换cell到 ASCII。 ASCII 只支持序数小于 255 的字符。什么是单元格?

If cell是一个unicode字符串,只需这样做cell.encode("utf8"),这将返回一个编码为 utf 8 的字节串

...或者真的iirc。如果你传递mysql unicode,那么数据库会自动将其转换为utf8...

你也可以尝试,

cell = unicode(cell).replace("\r", " ").replace("\n", " ").replace("\t", '').replace("\"", "")

或者只使用第三方库。有一个很好的工具可以为您修复文本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UnicodeEncodeError:“ascii”编解码器无法对位置 47 中的字符 u'\u2019' 进行编码:序数不在范围内(128) 的相关文章

  • 如何根据本地目录中的requirements.txt 文件使用pip 安装软件包?

    问题是这样的 我有一个要求 txt文件看起来像 BeautifulSoup 3 2 0 Django 1 3 Fabric 1 2 0 Jinja2 2 5 5 PyYAML 3 09 Pygments 1 4 SQLAlchemy 0 7
  • 为什么playsound函数无法在python中播放我的mp3文件

    所以基本上我试图创建一个音乐播放程序 可以在您要求时播放音乐 我只是想让歌曲播放部分实际工作 所以我编写了一个超级简单的代码来测试它 import playsound playsound sample mp3 This was done i
  • Python 列联表

    作为我正在编写的项目的一部分 我正在生成很多很多列联表 工作流程是 获取具有连续 浮点 行的大型数据数组 并通过分箱将其转换为离散整数值 例如 结果行的值为 0 9 将两行切片为向量 X 和 Y 并生成列联表 https en wikipe
  • 在列名中使用保留字

    这是一些简单的代码 但我只是不知道为什么我不能使用这个词作为表的实体 CREATE TABLE IF NOT EXISTS users key INT PRIMARY KEY NOT NULL AUTO INCREMENT username
  • dask groupby 不合并分区

    我有一组数据 我想要对其进行一些简单的 groupby count 操作 但我似乎无法使用 dask 来完成此操作 我很可能不理解 dask 中执行 groupby reduce 的方式 特别是当索引位于分组键中时 所以我将用玩具数据来说明
  • 单词和表情符号计数器

    我有一个包含 clear message 列的数据框 并且创建了一个用于计算每行中所有单词的列 history word count history clear message apply lambda x Counter x split
  • buildozer android NDK 未下载 Ubuntu

    我使用的是 Ubuntu 16 04 LTS 操作系统 我已经在 python2 和 python3 中安装了 buildozer android sdk 已安装 但 buildozer 在下载 android NDK 时显示错误 请帮我解
  • 在 Python 中通过 TCP 套接字发送文件

    我已经成功地将文件内容 图像 复制到新文件 然而 当我通过 TCP 套接字尝试同样的事情时 我遇到了问题 服务器循环未退出 客户端循环在到达 EOF 时退出 但服务器无法识别 EOF 这是代码 Server import socket Im
  • mysql非空字段计数

    我想计算 mysql 中特定字段集有多少字段为空 我找到了一些示例 但它们都遍历整个表 基本上我有8个字段 listing photo 1 到listing photo 8 我想知道其中有多少个被填充 I tried result mysq
  • 将文件转换为 Ascii 抛出异常

    后果我之前的问题 https stackoverflow com questions 31742609 how to strip the leading unciode characters from a file 31742694 nor
  • 没有名为“_pywrap_tensorflow_internal”的模块

    在尝试验证tensorflow gpu的安装时 在尝试执行 import tensorflow as tf 时出现ImportError 我在 Windows 7 上使用 Quadro K620 Tensorflow 是使用 pip 安装的
  • 使用变量访问 Django 模板中的字典元素

    情况如下 我们渲染一个视图 return render request test html db object db object dict dict 在模板中 我们现在想要访问字典db object key 在Python中你通常会这样做
  • Ionic框架和php mysql

    我是 Ionic Apahce Cordova 的新手 我创建了一个简单的应用程序 它具有静态列表视图项 但我想从 MYSQL 表获取数据并将其替换到我的静态列表中 我用谷歌搜索了一下 有人在研究它 但我不知道应该把我的 php 文件放在哪
  • 即使在 virtualenv 激活后,python 也指向全局安装

    有点奇怪 我激活了虚拟环境python仍然指向全局安装 which python usr bin python source virtualenv bin activate virtualenv which python usr bin p
  • 带有第二个 y 轴的 Seaborn 图

    i wanted to know how to make a plot with two y axis so that my plot that looks like this to something more like this by
  • 在 Python 中规范化数字列表

    我需要对值列表进行标准化以适应概率分布 即在 0 0 和 1 0 之间 我明白how标准化 但很好奇 Python 是否有一个函数可以自动执行此操作 我想从 raw 0 07 0 14 0 07 to normed 0 25 0 50 0
  • 键入提示以返回类的实例,其中 typevar 是类类型[重复]

    这个问题在这里已经有答案了 如何编写返回类型提示来指示函数返回类 Class 的实例 Class TypeVar Class bound type def make class class Class gt Class return cla
  • pandas 数据框中的 count 和 countif

    我有一个 DF 如下所示 trainee course completed days overdue Ava ABC Yes 0 Bob ABC Yes 1 Charlie DEF No 10 David DEF Yes 0 Emily D
  • 将行追加到 Pandas DataFrame 添加 0 列

    我正在创建一个 Pandas DataFrame 来存储数据 不幸的是 我无法提前知道我将拥有的数据行数 所以我的方法如下 首先 我声明一个空的 DataFrame df DataFrame columns col1 col2 然后 我附加
  • 在 Pandas DataFrame 中拆分列表

    我有一个包含多列的 csv 文件 使用 pandas 我将此 csv 文件读入数据帧 并有一个日期时间索引和五六个其他列 其中一列是时间戳列表 下面带有索引的示例 CreateDate TimeStamps 4 1 11 Timestamp

随机推荐