的回应之一我昨天问的一个问题 https://stackoverflow.com/questions/198721/converting-a-word-document-into-usable-html-in-php建议我确保我的数据库可以正确处理 UTF-8 字符。我怎样才能用 MySQL 做到这一点?
Update:
简短的回答 - 你几乎应该总是使用utf8mb4
字符集和utf8mb4_unicode_ci
整理。
更改数据库:
ALTER DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
See:
亚伦对此答案的评论如何让MySQL正确处理UTF-8 https://stackoverflow.com/questions/202205/how-to-make-mysql-handle-utf-8-properly#comment28222734_202246
utf8_general_ci 和 utf8_unicode_ci 有什么区别 https://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci
转换指南:https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-conversion.html https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-conversion.html
原答案:
MySQL 4.1及以上版本的默认字符集为UTF-8。您可以在您的my.cnf
文件,记得设置both客户端和服务器(default-character-set
and character-set-server
).
如果您希望将现有数据转换为 UTF-8,请转储数据库,然后将其作为 UTF-8 导入回来,确保:
- use
SET NAMES utf8
在查询/插入数据库之前
- use
DEFAULT CHARSET=utf8
创建新表时
- 此时,您的 MySQL 客户端和服务器应该采用 UTF-8(请参阅
my.cnf
)。请记住,您使用的任何语言(例如 PHP)也必须是 UTF-8。某些版本的 PHP 将使用自己的 MySQL 客户端库,该库可能不支持 UTF-8。
如果您确实想迁移现有数据,请记住先备份!当事情没有按计划进行时,可能会发生许多奇怪的数据砍伐!
一些资源:
-
完成 UTF-8 迁移 http://www.oreillynet.com/onlamp/blog/2006/01/turning_mysql_data_in_latin1_t.html(cdbaby.com)
- 文章关于PHP 函数的 UTF-8 准备情况 http://www.phpwact.org/php/i18n/utf-8(请注意,其中一些信息已过时)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)