Параметры сортировки MySQL


Я столкнулся с очень странной проблемой при разработке на PHP и MySQL. У меня была такая проблема 4-5 лет назад, но с тех пор ее нет. И действительно не помню, как я ее решил.

Хорошо... проблема: У меня есть база данных с сопоставлением utf_unicode_ci, но при вставке грузинских букв: სახელი და გვარი в базу данных у меня есть რ"áƒáƒ®áƒ"áƒáƒ<- эти символы. В чем может быть проблема? и как ее решить?

Есть идеи?

Author: hippietrail, 2011-09-09

4 answers

Согласно ответу Эрея, я понял, что 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 во второй строке решило мою проблему.

Надеюсь, это кому-нибудь поможет..

 3
Author: mrGott, 2011-09-16 20:14:14

Можете ли вы попробовать utf8_general_ci вместо этого? Это решит вашу проблему.

Но не забывай , *databases* and *tables* collation must be utf8_general_ci.

 2
Author: Eray, 2011-09-16 20:26:23

Убедитесь, что вы используете один из строковых типов с префиксом N (NCHAR, NVARCHAR).

Не забудьте добавить N к параметрам, которые вы передаете в базу данных при добавлении данных. Например:

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

Префикс N сообщит sql, что его последующая строка является строкой юникода.

 0
Author: Hossein, 2011-09-09 19:52:43

Единственное, в чем я могу вас заверить, так это в том, что проблема, с которой вы столкнулись, не имеет никакого отношения к сопоставлению. Это связано с набором символов и кодировкой, и, скорее всего, проблема заключается не в вставке данных в базу данных, а в том, что когда вы читаете данные и отображаете их, возникает много вопросов о символах юникода в mysql, ПОЭТОМУ выполните поиск, и вы найдете массу советов и информации.

 0
Author: nobody, 2011-09-09 19:57:25