Проблема с кодировкой записи данных через PHP в MySQL

T
На сайте с 28.06.2007
Offline
82
581


<?
$odin="Привет, это один";
$dva="Привет, это два";
$linku = mysql_connect("localhost","user","pass");
mysql_select_db("baza", $linku);
$q = "INSERT INTO `my_site` (odin, dva) VALUES ('$odin', '$dva')";
mysql_query($q);
?>

В базе сначало были корявые символы, затем я изменил кодировку базы и сравнение на cp1251, в итоге появились

????? ?? ??

Перепробовал разнообразные варианты не помогает. Данные которые ввожу отображаются в CP1251 проверял в браузере (Opera).

Как занести корректно данные в базу MySQL через PHP? Кто как делает? Пробовал через convert_cyr_string() в PHP сначало данные из cp1251 переводить в UTF-8 в базу поставил UTF-8, вносил данные через конвертёр - всё равно каракули были :(.

gerkon
На сайте с 21.10.2005
Offline
40
#1

Сравнение во всех полях = cp1251_general_ci

После mysql_connect поставьте такие строчки:

mysql_query ("set character_set_client='cp1251'");

mysql_query ("set character_set_results='cp1251'");

mysql_query ("set collation_connection='cp1251_general_ci'");

C уважением, Андрей. Пользуюсь этим хостингом уже 4 года! (http://www.replay.ru/index.php?part_id=3600) Ведущий манул Pixshock.net (http://www.pixshock.net)
T
На сайте с 28.06.2007
Offline
82
#2

gerkon, сделал как вы написали, всё заработало :).

ОГРОМНОЕ ВАМ СПАСИБО!

gerkon
На сайте с 21.10.2005
Offline
40
#3

Не за что ;)

pelvis
На сайте с 01.09.2005
Offline
345
#4
gerkon:
Сравнение во всех полях = cp1251_general_ci

После mysql_connect поставьте такие строчки:

mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");

Можно делать и так:

mysql_query("SET NAMES cp1251");

Продаю вывески. Задарма и задорого (https://www.ledsvetzavod.ru/)
gerkon
На сайте с 21.10.2005
Offline
40
#5

Можно, хотя Ваш вариант не всегда срабатывал у меня.

SS
На сайте с 03.02.2006
Offline
35
#6

Извиняюсь, что поднимаю старую тему, просто у меня похожая проблема.

Сравнение во всех полях utf8_general_ci

ставлю

mysql_query("SET character_set_client='utf-8'",$link_id);

mysql_query("SET character_set_connection='utf-8'",$link_id);

mysql_query("SET character_set_results='utf-8'",$link_id);

все равно не работает. по запросу mysql_client_encoding($link_id); выдает latin1

как его завтавить работать в UTF-8?

W
На сайте с 03.07.2007
Offline
36
#7


$q = "INSERT INTO `my_site` (odin, dva) VALUES ('$odin', '$dva')";

за это поубивал бы :)

ВСЕ ПЕРЕМЕННЫЕ НАДО ПИСАТЬ ПРАВИЛЬНО:


$q = "INSERT INTO `my_site` (`odin`, `dva`) VALUES ('".$odin."', '".$dva."');";
Лучшая веб студия Максимаф.ру (http://maksimaf.ru) ICQ : 464-338-997 MAil: wispoz@inbox.ru Телефон: 8(915) 368-45-93
[Удален]
#8
SimonScatt:
Извиняюсь, что поднимаю старую тему, просто у меня похожая проблема.
Сравнение во всех полях utf8_general_ci
ставлю
mysql_query("SET character_set_client='utf-8'",$link_id);
mysql_query("SET character_set_connection='utf-8'",$link_id);
mysql_query("SET character_set_results='utf-8'",$link_id);
все равно не работает. по запросу mysql_client_encoding($link_id); выдает latin1
как его завтавить работать в UTF-8?

mysql_query("SET NAMES UTF8");

SS
На сайте с 03.02.2006
Offline
35
#9
MOP1:
mysql_query("SET NAMES UTF8");

Да, забыл написать, это тоже пробовал. :(

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий