Owe*_*wen 83
更新:
简短的回答 - 你几乎应该总是使用utf8mb4charset和utf8mb4_unicode_cicollation.
要更改数据库:
ALTER DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Run Code Online (Sandbox Code Playgroud)
看到:
Aaron对此答案的评论如何使MySQL正确处理UTF-8
转换指南:https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-conversion.html
原答案:
MySQL 4.1及更高版本的默认字符集为UTF-8.您可以在验证这个my.cnf文件,记得设置两个客户端和服务器(default-character-set和character-set-server).
如果您希望将现有数据转换为UTF-8,请转储数据库,然后将其作为UTF-8导回,并确保:
SET NAMES utf8在查询/插入数据库之前使用DEFAULT CHARSET=utf8在创建新表时使用my.cnf).记住你使用的任何语言(如PHP)也必须是UTF-8.某些版本的PHP将使用自己的MySQL客户端库,这些库可能不支持UTF-8.如果您确实想要迁移现有数据,请记得先备份!当事情没有按计划进行时,会发生许多奇怪的数据问题!
一些资源:
Jav*_*ier 39
为了使这个'永久',在my.cnf:
[client]
default-character-set=utf8
[mysqld]
character-set-server = utf8
Run Code Online (Sandbox Code Playgroud)
要检查,请转到客户端并显示一些变量:
SHOW VARIABLES LIKE 'character_set%';
Run Code Online (Sandbox Code Playgroud)
验证它们是否全部utf8,除了..._filesystem,哪些应该是,binary并..._dir指向MySQL安装中的某个位置.
T.W*_*ole 30
MySQL 4.1及更高版本有一个默认字符集,它调用utf8但实际上只是UTF-8的一个子集(只允许三字节字符和更小字符).
utf8mb4如果你想要"完整"的UTF-8,请用作你的字符集.
Ric*_*mes 19
简短回答:utf8mb4在4个地方使用:
SET NAMES utf8mb4 或者在建立客户端与MySQL的连接时等效的东西CHARACTER SET utf8mb4 在所有表/列上 - 除了严格为ascii/hex/country_code/zip_code/etc的列.<meta charset charset=UTF-8>如果您输出到HTML.(是的拼写在这里不同.)上述链接提供了"解决所有问题需要详细的规范答案". - 这个论坛有一个空间限制.
编辑
除了CHARACTER SET utf8mb4包含"全部"世界的角色之外,COLLATION utf8mb4_unicode_520_ci还可以使用"最好的全能"整理.(对于那些希望使用这些语言的细微差别的人,还有土耳其语,西班牙语等.
字符集是数据库(默认)和表的属性。你可以看一下(MySQL命令):
show create database foo;
> CREATE DATABASE `foo`.`foo` /*!40100 DEFAULT CHARACTER SET latin1 */
show create table foo.bar;
> lots of stuff ending with
> ) ENGINE=InnoDB AUTO_INCREMENT=252 DEFAULT CHARSET=latin1
Run Code Online (Sandbox Code Playgroud)
换句话说; 检查或更改数据库字符集非常容易:
ALTER TABLE `foo`.`bar` CHARACTER SET utf8mb4; /* was: utf8 */
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
213308 次 |
| 最近记录: |