带编码的MySQL SELECT问题(可能是西里尔文)

时间:2010-09-14 06:16:24

标签: mysql character-encoding internationalization collation

我正在使用项目将数据从文本文件导出到mysql数据库 文本文件包含拉丁字母和西里尔字母。 这是错误:

从数据=“ГЭС”的提示中选择*;   + ------ + ------ +
  | id |数据|
  + ------ + ------ +
  | 1872年| АЭС|
  | 4671 | ГЭС|
  + ------ + ------ +

为什么我也会得到“АЭС”?同样的结果在查询中有“ВЭС”,“БЭС”,但不是“ФЭС”(我在表中没有这些值,但在“ВЭС”,“БЭС”的情况下,查询返回的结果与“ГЭС”,如果是“ФЭС”,它不会返回任何东西。)

我唯一的看法是问题在于编码。

1 个答案:

答案 0 :(得分:2)

需要考虑两件事:排序和编码。

编码确定字节流如何被解释为文本字符,即字节序列如何映射到代码点。我更喜欢将UTF-8用于所有内容,但是某些遗留系统或外部组件可能会迫使您在此处和其他编码之间进行转换。

排序规则设置比较和排序规则。每个表都有一个默认排序规则,但如果需要,您也可以按每个查询覆盖它。根据整理,给定的一对字符可以被认为是相等或不相等的;例如,不区分大小写的排序规则会将“a”和“A”视为相等,而区分大小写的则不会。

因此,要解决您的问题,您需要为表格设置正确的排序规则,并确保使用正确的表格和连接编码。