Когда я пытаюсь вставить русский текст в базу данных MySQL, он вставляет его как: г ???????????? ?? ????????
Рісѓрїр ° ріс <рї р ° с <рір ° рї
Итак, у меня есть две страницы: registration.php и addUser.php. В каждом из них
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
База данных состоит из 11 таблиц, каждая таблица имеет сортировку: utf8_general_ci, тип: MyISAM. Каждое поле в каждой таблице имеет значение Collation: 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! connect timeout 10 datadir \ usr \ local \ mysql-5.1 \ data \
Попробуйте вызвать mysql_set_charset('utf8');
после подключения к базе данных. Я думаю, что это похоже на выполнение запроса SET NAMES, но поскольку руководство по PHP говорит, что использование этой функции над запросом SET NAMES рекомендуется, я бы попробовал.
Кроме того, при отображении вашего контента вы можете попробовать echo htmlentities($string, ENT_COMPAT, 'UTF-8');
Я храню греческий в таблицах, созданных как 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;
Или, если таблица уже создана, я думаю, вы можете изменить ее в интерфейсе phpmyadmin. Может быть, это помогает.
Проверьте конфигурацию MySQL и убедитесь, что ваша кодировка определена правильно. Добавьте эти строки в my.cnf или my.ini , которые используются в вашей установке. Эти настройки сделали трюк для меня:
[client] default-character-set=utf8
[mysql] default-character-set=utf8
[mysqld] character-set-server=utf8
Я попробовал несколько сопоставлений в phpMyAdmin, а также изменил кодировку страницы, что не имело смысла, но я был готов попробовать что-нибудь после двух дней исследований. эта команда помогла мне: mysql_set_charset ('utf8');
Учет в столбце был установлен на koi8r_general_ci
Измените поле structure
чтобы установить сортировку utf16_general_ci
.
После этого вставьте свои данные.