python - 在 zlib 中编码并插入到 mysql

标签 python mysql encoding utf-8

我有一个用户的输入,在 utf8 中,很长。 我想通过压缩将其放入 mysql 中。 所以:

value =  value.decode('utf8', 'replace') 
value =  value.encode('zlib') 
cursor.execute('''INSERT INTO data (data_id, value) VALUES (%s,%s)''', (data_id, value  , ))

无论我做什么 (value = str(value), value = value.decode...),它都不起作用..

错误代码示例:

'ascii' codec can't encode character u'\xe9' in position 8177: ordinal not in range(128)
'ascii' codec can't encode character u'\xe9' in position 747: ordinal not in range(128)'ascii' codec can't encode character u'\xe9' in position 2478: ordinal not in range(128)

我尝试更改字段的结构:longtext、longbinary、blob、... 什么都没有。

一个答案?

最佳答案

value.encode('zlib') 的输出将是二进制的,不一定是有效的 UTF-8(即几乎从不)。

我会这样做:

value = value.encode('zlib').encode('base64')

这将为您提供一个很长的 ASCII 字符串,可以将其安全地包含在您的 SQL 查询中。

关于python - 在 zlib 中编码并插入到 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33775433/

相关文章:

python - Pygame.mixer.sound 的声音持续时间不够准确

python - 在 Pandas 中展平数据框

php - mysql_query 自动执行但在 onClick 时不执行

iphone - ASIHttpRequest 的编码问题

java - 谁在 Spring MVC 中设置请求内容类型

python - Kivy无法连接kv语言的on_enter回调

python - 在 Python 中扩展组合集?

php - 创建动态插入语句 - PHP - Mysql

php - MySQL 插入查询优化

mysql - 如何在 MySql 中将拉丁字符转换为相应的 unicode 转义序列?