MySQL UTF / Unicode迁移技巧

时间:2020-03-05 18:48:34  来源:igfitidea点击:

尝试将MySQL表从默认的不区分大小写的瑞典语或者ascii字符集迁移到utf-8时,是否有人有提示或者陷阱?我参与的一些项目正在努力实现更好的国际化,而数据库将成为这一变化的重要组成部分。

在寻求更改数据库之前,我们将转换每个站点以使用UTF-8字符编码(从最小限度到最大),以帮助确保所有输入/输出都使用相同的字符集。

谢谢你的帮助

解决方案

回答

我将遍历以下站点/文章以帮助找到答案。

每个软件开发人员绝对,肯定必须绝对了解Unicode和字符集(无借口!)

UTF-8和Unicode常见问题

Hanselminutes情节"与Michael Kaplan一起解决国际化问题"

在撰写本文时,我还发现了Derek Sivers @ O'Reilly ONLamp Blog上一个非常有主题的帖子。将latin1中的MySQL数据转换为utf8 utf-8

回答

一些提示:

  • CHARVARCHAR列将使用多达3倍的磁盘空间。 (瑞典语单词可能不会增加太多磁盘空间。)
  • 在读取或者写入数据库之前,请使用" SET NAMES utf8"。如果我们不这样做,那么我们将得到部分乱码。

回答

Your CHAR and VARCHAR columns will use up to 3 times more disk space.

仅当它们装满拉丁字母1且序数> 128时,才会填充它们。否则,对UTF-8的增加的空间使用将是最小的。

回答

排序规则并不总是有利的。我们会得到与非umlatted版本比较的umlats,这并不总是正确的。可能想使用utf8_bin,但随后所有内容也区分大小写。

回答

当心索引长度限制。如果表是结构化的,请说:

varchar(255)
b varchar(255)
键('a','b')

我们将超过密钥长度的1000个字节的限制。 255 + 255可以,但是255 * 3 + 255 * 3无法正常工作。