我正在将数据从SQL Server数据库迁移到MySQL数据库。
很少有表格使用英语以外的语言。数据主要是流行印度语,如印地语,马拉地语等。
我检查这些表,发现包含其他语言数据的字段已声明为:
描述nvarchar
对于这些类型的字段,我在MySQL中创建了如下字段
描述longtext(使用utf8_general_ci排序规则)
我错过了什么,那么这些设置是否有效?
答案 0 :(得分:0)
这取决于。如果您可以获得几个印度字符的HEX,我们可以验证它是否在utf8中编码。 (在utf8中,一个印度字符的十六进制通常为3 字节 E0 xx yy
。)假设它是utf8,则声明表/列为{ {1}}会让它轻松接受这些角色。您还必须声明您的客户端正在使用utf8进行通话。什么客户?
我建议大于CHARACTER SET utf8
(允许16M字节,可能绰绰有余)或MEDIUMTEXT
(64KB)而不是TEXT
(4GB限制)。
在印度字符集方面,我不熟悉LONGTEXT
和utf8_general_ci
排序规则之间的差异。如果在排序和排序字符时存在“组合重音”和其他需要特别注意的事项,则utf8_unicode_ci
可能是首选。否则,坚持使用更简单的utf8_unicode_ci
。如果您可以指向我讨论“如何订购印地语(等)单词”的网页(英文),那么我可以提供帮助。我甚至可能会在my blog on charsets and collations中学到一些东西。