我遇到了一些特殊角色的问题。当一个人试图在我的网站上注册时,例如使用字母“”,我会收到以下错误消息:
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
谢谢。
发布于 2013-10-15 10:21:59
你需要:
latin1
”,那就可以了。如果您想要存储更多“异国情调”字符,utf8
是一个很好的选择,因为它几乎支持所有东西。
注意,像latin1_swedish_ci
这样的排序规则几乎是不相关的。排序规则遵循您选择的字符集,但在这里,字符集首先是导入变量。utf8
来告诉它。这很可能是你的问题所在。如何设置它取决于如何连接到数据库。mysql_set_charset
,DSN连接字符串中的charset
参数或SET NAMES utf8
查询就可以了。*MySQL的utf8
不是真正的UTF-8,只支持所有Unicode的一个子集。utf8mb4
是“真实的”UTF-8,支持一切。utf8mb4
在MySQL 5.1中不可用,只有5.5+。
有关更多信息,请参见一路走来、在Web应用程序中处理Unicode前端回退、每个程序员绝对、积极地需要了解编码和字符集才能处理文本。。
https://stackoverflow.com/questions/19378614
复制相似问题