【发布时间】:2013-05-19 00:30:39
【问题描述】:
我在我的 gentoo 中写了一个使用 MySQLdb 的 python 程序:
- mysql版本=
5.1.67-log Gentoo Linux mysql-5.1.67 - 字符集 =
utf-8
当我连接到 mysql 和 print conn.character_set_name() 时,它返回 utf-8
但是当我在我的 VPS(ubuntu) 中测试程序时
- mysql版本=
5.1.60-log Source distribution - 字符集 =
utf-8.
在我的程序中我 print conn.character_set_name() 它返回 latin1?
为什么两台机器使用 MySQLdb 字符集不一样?
我已经阅读了MySQLdb 的源代码,它使用了_mysql 模块,但这是一个.so 文件。我不知道如何获得charser
【问题讨论】:
-
它可能会从
/etc/my.cnf中的mysql 配置中获取一个默认字符集(或者它存在于您系统上的任何位置)。该值也有可能被硬编码到mysqld二进制文件中——我隐约记得我上次编译mysql 时有一个configure参数来设置它。当你连接到 mysql 时覆盖字符集可能是最安全的,那么默认值是什么都没关系。 -
@Aya ,我在命令中连接mysql并使用
status,它说所有字符集都是utf-8。而且我只看到/etc/my.cnf,没有关于charset的选项。 -
@Aya ,我已经检查了本地机器中的 my.conf 。还有字符集,可能是我的vps里的mysql,charset是硬编码在mysqld里的
-
添加了更多信息的答案。为了获得最大的可移植性,最好始终指定要使用的字符集,然后默认值就无关紧要了。
标签: python mysql python-2.7 encode