通过C-Api和Gtk GUI工具包在Linux Ubuntu中使用MySql服务器我在使用克罗地亚字符“čćžšđČĆŽŠĐ”时有一些关于utf8排序和排序的一般问题。
我的MyISAM表格是使用ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE utf8_general_ci
创建的。
服务器返回数据,但MySql不知道克罗地亚字母。他们“不知道”正确地对它们进行排序,并且在这个字符的情况下,他们“不知道”将小写(比如“č”)换成大写的“Č”。所有其他字母一切正常。 所以,现在我只能选择使用GTK对查询结果进行额外排序,以便正确处理所有这些情况。但(当然)这是我想要的“最后”解决方案。
有什么建议吗?
答案 0 :(得分:3)
如果您使用的是mysql-5.6或更高版本,请使用utf8_croatian_ci
归类。 Discussion here
Sretno
答案 1 :(得分:2)
使用以下查询:
ORDER BY n COLLATE utf8_croatian_ci
答案 2 :(得分:1)
答案 3 :(得分:0)
对于波斯语使用此查询...对我来说很棒!
ORDER BY n COLLATE utf8_persian_ci
注意:强> 用您的归档名称更改'n'。
答案 4 :(得分:0)
我无法访问Mysql server 5.6,因此我执行了以下操作:
我在表格中添加了另一列,并用我想要排序的数据填充它。 然后我重命名了所有对mysql不可读的单词 - 比如čevapčići......等等。 我制作了čevapčićicvzevapcici,现在我可以通过我的排序列排序并显示原始列。
示例:
ČukaĆićarijaAnstarŽenaBalast
CvzukaCzzićarijaAnstarZzzena Balast
按排序从表格顺序中选择Ime;
预期结果:
Anstar Balast 的CuKα Ćićarija ZENA
答案 5 :(得分:-1)
我终于找到了解决方案! MySql服务器应该是5.6或更高。 如果有人坚持这一点,请执行以下操作:
//immediately after all connections, for example...
mysql_real_connect(conn, "localhost", mysql_user_name, mysql_password, database,
0, NULL, 0);
//is needed to do this CRITICAL query:
//=====================================================================
mysql_query(conn, "SET NAMES 'utf8' COLLATE 'utf8_croatian_ci'");
//=====================================================================
//and then query to get data, for example...
SELECT DTBL_ID, mjj, kolic, prodano, name, sb, prodajnac FROM invlista WHERE name
LIKE 'čoko%' ORDER BY name COLLATE utf8_croatian_ci ASC LIMIT 4048
在这种情况下,您将按照克罗地亚规则进行排序,国家字母“čćšđž”将被忽略大小写,有向图也将被正确排序。 您不必在服务器上设置任何排序规则或字符集。
这就是你所需要的!