我想将某个查询的结果导出到文件中,因此发出了 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/