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
回答
一些提示:
CHAR
和VARCHAR
列将使用多达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无法正常工作。