3

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

嗯......问题:我有一个带有 utf_unicode_ci 排序规则的数据库,但是在插入格鲁吉亚字母时:სახელი და გვარი 在数据库中我有 მáƒ~ხეáƒ~რ<- 这个符号。问题可能是什么?以及如何解决?

有任何想法吗?

4

4 回答 4

3

根据 Eray 的回答,我意识到 utf8_general_ci 应该在排序规则中设置,而不是 utf8_unicode_ci

除此之外,使用 mysql_set_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 解决了我的问题。

希望它可以帮助任何人..

于 2011-09-16T20:14:14.363 回答
2

你可以试试utf8_general_ci这个吗?它会解决你的问题。

但别忘了,*databases* and *tables* collation must be utf8_general_ci

于 2011-09-09T19:49:07.227 回答
0

确保您使用的是带有N前缀(NCHAR、NVARCHAR)的字符串类型之一。

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

INSERT INTO table VALUES (N'Georgian Letters', N'Georgian Letters', ...)

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

于 2011-09-09T19:52:43.920 回答
0

我可以让您确定的一件事是,您遇到的问题与整理没有任何关系。它与字符集和编码有关,很可能问题不在于将数据插入数据库时​​,而是在读取数据并显示它们时,有很多关于 mysql 中的 unicode 字符的问题,所以搜索一下,你会发现大量的提示和信息。

于 2011-09-09T19:57:25.840 回答