我现在有一个数据库,大多数表和字段都存储为拉丁语瑞典语。
我的问题是:
我应该对表及其字段使用utf8_unicode_ci吗?
表的排序规则与字段的排序规则有什么区别?
我可以将所有字段/表批量更改为utf8_unicode_ci吗?(如果这是正确的排序)
字段/表中是否会发生数据丢失?
我想使用utf8的原因是我需要在数据库中存储中文和/或俄文字符。

最佳答案

我会去的。当使用多种语言时,很少有理由不使用utf8。
如果在单个列定义中未指定列字符集和排序规则,则将表字符集和排序规则用作列定义的默认值。
如果字段上没有单独的排序规则/字符集,则可以编写一个简单的脚本,循环遍历所有表和问题ALTER TABLE tablename CONVERT TO CHARSET utf8;。如果字段具有自定义字符集/排序规则,则必须发出MODIFY COLUMN语句。转换后,您可以很容易地识别查询information_schema.columns表的那些人。
是的,如果数据不能用utf8表示(鉴于您当前的排序规则,这是不太可能的),数据可能会中断。另外,如果您将utf8文本存储在实际上不是utf8的列中,那么转换这些字段会导致类似于双utf8编码的结果,这是一个非常不方便清理的混乱。如果您知道某个列被错误地用于编写utf8,可以将其转换为bin,然后转换为utf8,以防止转换/双重编码。

10-06 07:05
查看更多