2008-09-05 56 views
4

当尝试将MySQL表从缺省的不区分大小写的swedish或ascii字符集迁移到utf-8时,有没有人有任何提示或窍门时刻要注意?我参与的一些项目正在努力实现更好的国际化,数据库将成为这一变化的重要组成部分。MySQL UTF/Unicode迁移技巧

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

感谢所有帮助

回答

2

一些提示:

  • CHARVARCHAR列将最多使用3次以上的磁盘空间。 (您可能不会为瑞典语单词获得太多磁盘空间。)
  • 在读取或写入数据库之前使用SET NAMES utf8。如果你不这样做,你会得到部分乱码的字符。
1

我将要渡过了以下网站/物品,以帮助找到答案。

The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) - Joel on Software

UTF-8 And Unicode FAQ

Hanselminutes episode "Sorting out Internationalization with Michael Kaplan"

而且我也只是发现了一个很话题上通过后德雷克·锡弗斯@奥赖利ONLamp博客,因为我在写这一点。 Turning MySQL data in latin1 to utf8 utf-8

0

CHARVARCHAR列将最多使用3次以上的磁盘空间。

只有当它们塞满了latin-1且序号> 128时。否则,增加的UTF-8空间使用量是最小的。

0

整理不总是有利的。您将得到与非修正版本相对应的清单,但这并不总是正确的。可能要去w/utf8_bin,但所有内容都区分大小写。

1

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

一个varchar(255) b为varchar(255) 键( 'A', 'B')

你会走过去的1000字节的限制上密钥长度。 255 + 255没问题,但255 * 3 + 255 * 3是不行的。