python - shell命令[mysql -e "..."-u ... > some_file.sql]以哪种编码将内容存储到some_file.sql中?

标签 python mysql encoding dump

我想将某个查询的结果导出到文件中,因此发出了 shell 命令

mysql -e "SELECT some, thing FROM some_where" -u my_user -p my_database > some_file.sql

我应该提到,表和列都以 utf8 存储。当尝试通过此 python 代码迭代各行时

with codecs.open(PATH_TO_SQL_FILE, 'r', 'utf8') as read_file:
    for line in read_file:
        print line

我收到错误:

UnicodeDecodeError: 'utf8' codec can't decode byte 0xf3 in position 1: invalid continuation byte

如果我删除编解码器的使用,脚本完成时不会出现错误,但我可以在终端中看到如下内容:

Zolt�n L�szl�

我想念什么?我应该使用其他编解码器吗?如何确定使用哪一种编解码器进行解码?感谢所有提示!

顺便说一句,如果我在终端中使用 vi 打开文件 some_file.sql,每个变音符号都会以正确的方式显示。

最佳答案

除非您另有说明,否则 mysql 使用 Latin-1 作为默认字符集。您可以在 python 中从 iso-8859-1 进行解码,或者使用:

mysql --default-character-set=utf-8 -e "SELECT some, thing FROM some_where" -u my_user -p my_database > some_file.sql

关于python - shell命令[mysql -e "..."-u ... > some_file.sql]以哪种编码将内容存储到some_file.sql中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6951332/

相关文章:

python - 如何让 Pandas 系列只绘制索引中的数据?

python - Spyder无法从Anaconda环境之一启动

mysql - 如何复制MySQL数据库+包含存储过程(例程)

python 请求无法解码 utf-8 API 响应

java - 自定义字体编码

python - 尝试使用 DataProcSparkOperator 任务加载 DAG 的 AttributeError

python - Python中二维数组的对数

java - 将 SQL 日期时间转换为 Java

php - 使用 extjs 在数组中更新 MYSQL,单个响应

java - 为什么 Eclipse 使用 Cp1252 编码?