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

在我们考虑更改数据库之前,我们将把每个站点转换为使用 UTF-8 字符编码(从最不重要到最重要),以帮助确保所有输入/输出都使用相同的字符集。

谢谢你的帮助

有帮助吗?

解决方案

一些提示:

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

其他提示

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

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

您将超过密钥长度 1000 字节的限制。255+255 可以,但 255*3 + 255*3 不行。

你的 CHARVARCHAR 列将使用最多 3 倍的磁盘空间。

仅当它们充满 latin-1 且序数 > 128 时。否则,UTF-8 增加的空间使用量是最小的。

整理并不总是有利的。您将得到与非元音版本对照的元音,这并不总是正确的。可能想要使用 utf8_bin,但所有内容也区分大小写。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top