首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我应该使用什么character_set和表排序规则?

我应该使用什么character_set和表排序规则?
EN

Stack Overflow用户
提问于 2013-10-15 10:15:32
回答 1查看 258关注 0票数 0

我遇到了一些特殊角色的问题。当一个人试图在我的网站上注册时,例如使用字母“”,我会收到以下错误消息:

代码语言:javascript
运行
复制
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//')

我知道字符设置可能是问题所在,当我检查数据库时,我可以看到有些表有排序规则:

代码语言:javascript
运行
复制
latin1_swedish_ci 

有些表有排序规则(例如,上面的示例中有问题的表'phpbb3_users‘):

代码语言:javascript
运行
复制
utf8_bin

当我检查我的MySql设置时,我看到我有以下混合设置:

代码语言:javascript
运行
复制
| 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 
  1. 你推荐我使用什么character_set?我已经了解到将character_set改为utf8mb4可以解决这个问题,但是我的MySql版本(5.1.4)支持吗?
  2. 我应该做character_set修改吗?在/etc/my.cnf和所有表排序规则的所有实例中?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-10-15 10:21:59

你需要:

  1. 将列的字符集(或表/数据库/服务器的下一个更高的默认字符集)设置为支持要存储的字符的字符集。如果你想存储“latin1”,那就可以了。如果您想要存储更多“异国情调”字符,utf8是一个很好的选择,因为它几乎支持所有东西。 注意,像latin1_swedish_ci这样的排序规则几乎是不相关的。排序规则遵循您选择的字符集,但在这里,字符集首先是导入变量。
  2. 将连接字符集设置为要发送文本的字符集。如果要将UTF-8编码文本发送到数据库,则需要将连接字符集设置为utf8来告诉它。这很可能是你的问题所在。如何设置它取决于如何连接到数据库。mysql_set_charset,DSN连接字符串中的charset参数或SET NAMES utf8查询就可以了。
  3. 发送在步骤2中声明的编码中编码的文本。

*MySQL的utf8不是真正的UTF-8,只支持所有Unicode的一个子集。utf8mb4是“真实的”UTF-8,支持一切。utf8mb4在MySQL 5.1中不可用,只有5.5+。

有关更多信息,请参见一路走来在Web应用程序中处理Unicode前端回退每个程序员绝对、积极地需要了解编码和字符集才能处理文本。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19378614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档