не могу вставить русский текст в базу данных MySQL - PullRequest
5 голосов
/ 10 декабря 2010

Когда я пытаюсь вставить русский текст в базу данных MySQL, он вставляется следующим образом: г ???????????? ?? ????????
Ріс °рїр ° ріс ‹рї р ° с‹ рір ° рї

Итак, у меня есть две страницы: registration.php и addUser.php. В каждом из них

 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

База данных состоит из 11 таблиц, каждая таблица имеет параметры сортировки: utf8_general_ci, тип: MyISAM. Каждое поле в каждой таблице имеет параметры сортировки: utf8_general_ci.

Когда я пишу в базу данных напрямую в phpMyAdmin, а затем показываю эти данные на веб-странице. На английском и русском - все ок.

Но когда я заполняю свою форму личными данными на registration.php, а затем собираюсь добавить addUser.php - все русские символы отображаются так же, как я написал выше - на странице и в базе данных тоже.

    function AddNewUser($Name, $Surname, $FatherName, $Email, $Password, $Phone, $DegreeID, $RankID, 
$Organization, $Department, $Country, $City, $Address, $Job)
{
        //fetch data from database for dropdown lists
        //connect to db or die)
    $db = mysql_connect($GLOBALS["gl_kussdbName"], $GLOBALS["gl_kussUserName"], $GLOBALS["gl_kussPassword"] ) or die ("Unable to connect");

    //to prevenr ????? symbols in unicode - utf-8 coding
    mysql_query("SET NAMES 'UTF8'");

    //select database
    mysql_select_db($GLOBALS["gl_kussDatabase"], $db);
    $sql = "INSERT INTO UserDetails (
UserFirstName,
UserLastName,
UserFatherName,
UserEmail,
UserPassword,
UserPhone,
UserAcadDegreeID,
UserAcadRankID,
UserOrganization,
UserDepartment,
UserCountry,
UserCity,
UserAddress,
UserPosition) 
VALUES(
'".$Name."',
'".$Surname."',
'".$FatherName."',
'".$Email."',
'".$Password."',
'".$Phone."',
'".$DegreeID."',
'".$RankID."',
'".$Organization."',
'".$Department."',
'".$Country."',
'".$City."',
'".$Address."',
'".$Job."'
);";
    //execute SQL-query
    $result = mysql_query($sql, $db);
    if (!$result) 
    {
        die('Invalid query: ' . mysql_error());
    }
    //close database  = very inportant
    mysql_close($db);

}
?>

Там также такая информация в phpMyAdmin:

auto increment increment    1
auto increment offset   1
autocommit  ON
automatic sp privileges ON
back log    50
basedir \usr\local\mysql-5.1\
big tables  OFF
binlog cache size   32,768
binlog format   STATEMENT
bulk insert buffer size 8,388,608
character set client    utf8
(Global value)  cp1251
character set connection    utf8
(Global value)  cp1251
character set database  cp1251
character set filesystem    binary
character set results   utf8
(Global value)  cp1251
character set server    cp1251
character set system    utf8
character sets dir  \usr\local\mysql-5.1\share\charsets\
collation connection    utf8_general_ci
(Global value)  cp1251_general_ci
collation database  cp1251_general_ci
collation server    cp1251_general_ci
completion type 0
concurrent insert   1

Так что мне нужно правильно показать, сохранить и выбрать русский текст из базы данных. Thanx! время ожидания подключения 10 datadir \ usr \ local \ mysql-5.1 \ data \

Ответы [ 5 ]

5 голосов
/ 10 декабря 2010

Попробуйте позвонить mysql_set_charset('utf8'); после подключения к базе данных.Я думаю, что это похоже на выполнение запроса SET NAMES, но поскольку в руководстве по PHP сказано, что рекомендуется использовать эту функцию вместо запроса SET NAMES, я бы попробовал.

Кроме того, при отображении содержимого вы могли быпопробуйте echo htmlentities($string, ENT_COMPAT, 'UTF-8');

4 голосов
/ 15 октября 2011

Я храню греческий в таблицах, созданных как ths:

CREATE TABLE `test` (
  `test_id` SMALLINT UNSIGNED NOT NULL   AUTO_INCREMENT,
  `test_name` VARCHAR(30)  NOT NULL,
  PRIMARY KEY  (`test_id`)
 ) ENGINE=InnoDB   DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

Или, если таблица уже создана, я думаю, вы можете изменить charset в интерфейсе phpmyadmin. Может быть, это поможет.

3 голосов
/ 10 декабря 2010

Проверьте конфигурацию MySQL и убедитесь, что ваша кодировка определена правильно. Добавьте эти строки в my.cnf или my.ini , которые используются в вашей установке. Эти настройки сделали свое дело для меня:

[client]
default-character-set=utf8


[mysql]
default-character-set=utf8


[mysqld]
character-set-server=utf8
1 голос
/ 06 мая 2011

Я пробовал несколько параметров сортировки в phpMyAdmin, а также менял кодировку страницы, что не имело смысла, но я хотел попробовать что-нибудь после двух дней исследования. мне помогла эта команда: mysql_set_charset ('utf8');

Параметры сортировки для столбца были установлены на koi8r_general_ci

0 голосов
/ 11 мая 2016

Отредактируйте поле structure, чтобы установить параметры сортировки utf16_general_ci.
После этого введите свои данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...