将MySQL从latin1编码更改为UTF-8

Gen*_*nik 3 php mysql database character-encoding

我最近意识到我犯了一个大错误,并在UTF-8的前端编码了一些东西,在DB端编译了latin1.

我想将我的MySQL数据库切换为UTF-8.做这样的程序有"好的做法"吗?我可以采取任何建议的步骤?我应该注意哪些陷阱?

谢谢,Alex

Qua*_*noi 5

主要(也是最常见的)陷阱是希望ALTER DATABASE … DEFAULT CHARACTER SETALTER TABLE … DEFAULT CHARACTER SET将改变现有列的编码.

这些语句仅影响发出这些语句后创建的表和列.

你应该ALTER分别使用每个表

ALTER TABLE mytable CONVERT TO CHARACTER SET UTF8;
Run Code Online (Sandbox Code Playgroud)

  • @ColShrapnel:你可以命名一个在`latin1`但不在'UTF8`中的字符吗?尝试将非latin1字符插入`latin1`列将导致警告"字符串值不正确"并且字符被"?"符号替换. (2认同)
  • @ColShrapnel:请尝试在`latin1`表中插入俄语字符,看看会发生什么.使用您想要的任何客户端编码. (2认同)
  • @ColShrapnel:显示,不要告诉.请尝试在`latin1`表中插入俄语字符.然后发布转储. (2认同)