4

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

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

谢谢你的帮助

4

5 回答 5

2

一些提示:

  • 您的CHARVARCHAR列将使用多达 3 倍的磁盘空间。(您可能不会为瑞典语单词增加太多磁盘空间。)
  • SET NAMES utf8在读取或写入数据库之前使用。如果你不这样做,那么你会得到部分乱码字符。
于 2008-09-05T23:10:20.210 回答
1

我将浏览以下网站/文章以帮助找到答案。

每个软件开发人员绝对、肯定必须了解 Unicode 和字符集的绝对最低要求(没有任何借口!) - Joel on Software

UTF-8 和 Unicode 常见问题

Hanselminutes 插曲“与迈克尔·卡普兰一起梳理国际化”

在我写这篇文章的时候,我还发现了 Derek Sivers @ O'Reilly ONLamp 博客的一篇非常热门的帖子。将 latin1 中的 MySQL 数据转换为 utf8 utf-8

于 2008-09-05T22:39:53.340 回答
1

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

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

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

于 2008-09-16T14:33:08.317 回答
0

您的CHARVARCHAR列将使用多达 3 倍的磁盘空间。

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

于 2008-09-05T23:12:00.640 回答
0

排序规则并不总是有利的。你会得到 umlats 整理到非 umlatted 版本,这并不总是正确的。可能想要使用 utf8_bin,但所有内容也都区分大小写。

于 2008-09-16T03:05:58.717 回答