utf8和latin1

时间:2019-08-05 09:56:34

标签: mysql utf-8

数据库中具有大量数据的表的一半设置为拉丁文1。 在这些Latin 1表中,如果该行需要文本输入(非整数),则将大多数行设置为utf8。

一切都是英文。

如果我需要将这些Latin 1表转换为utf8,我的情况有多严重?

2 个答案:

答案 0 :(得分:1)

首先,澄清一下:您说“大多数设置为utf8”;我假设您是说“大多数设置为utf8”?

上的latin1的含义只是缺省值。它对性能等没有影响。

如果您未指定ALTER TABLE .. ADD COLUMN ..而进行CHARACTER SET utf8,唯一的“伤害”就会发生。

您说的所有文字都是英语?则latin1和utf8之间没有编码差异。带有重音字母等时,可能会出现问题。

存在一个性能问题:如果您在JOIN列上同时VARCHAR两个表,但是两个表中该列的CHARACTER SETCOLLATION不同,这将比那些设置相同的情况要慢。 (听起来好像没有这个问题。)再次,请注意,表的默认设置与列设置本身无关,而与之无关。

是的,将表的默认值设置为utf8会更“干净”。这应该是不进行转储的一种方法,但是可以一次更改一个表:

ALTER TABLE t CONVERT TO CHARACTER SET utf8;

这将更改表的默认 和所有尚未utf8的列。

答案 1 :(得分:0)

mysqldump --add-drop-table database_to_correct |替换CHARSET = latin1 CHARSET = utf8 | iconv -f latin1 -t utf8 | mysql database_to_correct

相关问题