我正在开发一个在 Linux 服务器上使用 MySQL 数据库的网站。
在数据库上使用 phpMyAdmin,它说
- MyISAM 是此 MySQL 服务器上的默认存储引擎
- latin1_swedish_ci
但是,我已经使用 InnoDB 和 utf8_unicode_ci 创建了所有表。我还检查了所有表的表字段是 utf8_unicode_ci。
然而,当我 mysql_fetch_array 并回显到流时,它给出了胡言乱语。我必须明确设置mysql_set_charset('utf8')
文本才能正确显示。
PHP版本为5.3.9;MySQL 版本是 5.1.70-cll - MySQL 社区服务器 (GPL)。
这是我第一次遇到这个问题,之前我从来没有设置过字符集。
是什么导致 php mysql_* 获取的文本乱码?什么情况下需要mysql_set_charset
?
编辑:这不是一个吸引建议使用替代库的问题,例如 mysqli、pdo。我只想了解有关 MySQL 和字符集行为的当前情况。谢谢。