Сопоставление MySQL - PullRequest
       32

Сопоставление MySQL

3 голосов
/ 09 сентября 2011

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

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

Есть идеи?

Ответы [ 4 ]

3 голосов
/ 17 сентября 2011

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

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

2 голосов
/ 09 сентября 2011

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

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

0 голосов
/ 09 сентября 2011

В одном я могу убедиться, что проблема, с которой вы столкнулись, не имеет ничего общего с сопоставлением.Это связано с набором символов и кодировкой, и, скорее всего, проблема заключается не в вставке данных в базу данных, а в том, что когда вы читаете данные и отображаете их, возникает много вопросов о символах юникода в mysql на SO, поэтому выполните поиск, и вы найдететонны советов и информации.

0 голосов
/ 09 сентября 2011

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

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

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

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

...