Php MySQL排序

Php MySQL排序,php,mysql,collation,georgian,Php,Mysql,Collation,Georgian,在PHP和MySQL上开发时,我遇到了一个非常奇怪的问题。 4-5年前我就有过这样的问题,但从那以后就没有了。我真的不记得我是怎么解决的 嗯。。。问题:我的数据库具有utf_unicode_ci的排序规则,但在插入格鲁吉亚字母时:სახელი და გვარი 在数据库中,我使用了მჃჃƒƒƒƒƒ你能尝试用utf8_general_ci代替这个吗? 它会解决你的问题 但别忘了,*数据库*和*tables*排序规则必须是utf8\u general\u ci请确保使用前缀为N的字符串类

在PHP和MySQL上开发时,我遇到了一个非常奇怪的问题。 4-5年前我就有过这样的问题,但从那以后就没有了。我真的不记得我是怎么解决的


嗯。。。问题:我的数据库具有utf_unicode_ci的排序规则,但在插入格鲁吉亚字母时:სახელი და გვარი 在数据库中,我使用了მჃჃƒƒƒƒƒ你能尝试用
utf8_general_ci
代替这个吗? 它会解决你的问题


但别忘了,
*数据库*和*tables*排序规则必须是utf8\u general\u ci

请确保使用前缀为N的字符串类型之一(NCHAR、NVARCHAR)

添加数据时,不要忘记将N添加到要传递到数据库的参数中。例如:

插入表格值(N'Georgian字母'、N'Georgian字母'、…)


N前缀将告诉sql其后续字符串是unicode字符串。

我可以确保的一点是,您遇到的问题与排序规则无关。它与字符集和编码有关,最可能的问题不是在将数据插入数据库时,而是在读取并显示数据时,mysql中有很多关于unicode字符的问题,所以搜索一下,你会发现很多提示和信息。

根据Eray的回答,我意识到utf8\u general\u ci应该在排序规则中设置,而不是utf8\u unicode\u ci

除此之外,还可以使用mysql\u set\u charset('utf8',$connection)函数

以下是示例:

        $connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);
    mysql_set_charset('utf8',$connection);      
    if (!$connection) {
        die("Database connection failed: " . mysql_error());
    } else {
        $db_select = mysql_select_db(DB_NAME, $connection);
        if (!$db_select) {
            die("Database selection failed: " . mysql_error());
        }
    }
}
所以让mysql_set_charset在第二行解决了我的问题


希望它能帮助任何人

看看这个线程:我想我的答案可能有助于解释一个可能的问题。排序规则(排序顺序)与显示的错误字符集有什么关系?表的排序规则决定排序顺序。这与此问题无关。问题不在于排序?排序规则链接到字符集,使用排序规则,您也可以在以下情况下设置字符集“სახელი და გვარი" 显示为“მჃƒƒƒƒ”Ⴣƒƒƒƒ它肯定与排序规则无关,只有在比较字符串时才考虑排序规则。排序规则基于字符集。如果没有设置utf8字符集,您就不能使用utf8\u general\u ci排序规则。@shrapel:是的,排序规则是基于字符集的,但这里的问题是他在一个字符集中插入字符,而它们在另一个字符集中显示。更改排序规则绝对不会起任何作用。问题很可能是php使用的客户端字符集不是utf8,并且字符被错误地翻译和存储。