我遇到了一些特殊字符的问题。当有人尝试使用例如字母“ö”在我的网站上注册时,我收到以下错误消息:
1366 - Incorrect string value: '\xF6m' for column 'username' at row 1
insert into phpbb3_users (username, username_clean, user_password) values ('Ström', 'Ström', '$H$9iK6K37VoHM//')
我知道字符设置可能是问题所在,当我检查数据库时,我可以看到一些表有排序规则:
latin1_swedish_ci
并且某些表具有排序规则(例如,在上面的示例中存在问题的表 'phpbb3_users'):
utf8_bin
当我检查我的 MySql 设置时,我发现我有这些混合设置:
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
| collation_connection | latin1_swedish_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci
- 你推荐我使用什么字符集?我了解到将 character_set 更改为 utf8mb4 可以解决问题,但是我的 MySql 版本(5.1.4)是否支持呢?
- 我应该更改 character_set 吗?在 /etc/my.cnf 和所有表排序规则的所有实例中?
谢谢。