[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Крякозябры при "INSERT into" в базу
Страницы: 1, 2, 3
zura87
Здравствуйте!
Возникла проблема при записи в базу русских букв средствами php.

Записывается переменная стандартнм способом
INSERT into


Латинские буквы заносятся нормально а расские заносятся крякозабрами.

user posted image

Сама база в кодировке UTF-8

Что сделать?
Кто-нибудь знает в чем может быть причина?
beginner95
zura87
Покажите файл соединения с базой

_____________
Лучший хостинг
zura87
Цитата (beginner95 @ 31.01.2013 - 14:49)
zura87
Покажите файл соединения с базой



$db = array();
$db['server'] = "localhost";
$db['login'] ="login";
$db['passw'] = "123456";
$db['name_db'] = "reg";

$link = mysql_connect($db['server'], $db['login'], $db['passw']) or die("Error!");
mysql_select_db($db['name_db'], $link) or die("Error!");
mysql_set_charset ('utf8',$link);

inpost
Не там проблему ищешь. Попробуй перед занесением вывести:
echo $var; А потом в исходном коде посмотри... это не крякозябры, а декодирование символов. Спецсимволы именно так и пишутся: &ltr; и т.д.
Вот тут почитай: http://ru.wikipedia.org/wiki/%D0%92%D0%B8%...%BE%D0%BB%D1%8B
То есть подозрение на то, что символы уже такими были до внесения в БД. Может быть urldecode, если методом GET передаёшь. Потому что такое методом POST надо.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
zura87
Нет в этом пдлане, " что символы уже такими были до внесения" это не так.

Когда я в ручную в phpMyadmin вписываю по русски,то на странице все отоброжается правильно а вот когда через php вношу,то декодирование символы smile.gif

user posted image

все передонтся методом POST.



inpost
я не вижу скрипта, может быть ты обрабатываешь там всякими htmlspecialchars... ты не ответил на мои вопросы...

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
zura87
Вот кусок формы

<form action="register.php" method="post" name="regForm" id="regForm" >
<table
width="95%" border="0" cellpadding="3" cellspacing="3" class="forms">
<tr>
<td
colspan="2">Введите ваше имя<span class="required"><font color="#CC0000">*</font></span><br>
<input
name="full_name" type="text" id="full_name" size="40" class="required"></td>



Вот кусок обработчика

include 'dbc.php';

$err = array();

if($_POST['doRegister'] == 'Register')
{
/******************* Filtering/Sanitizing Input *****************************
This code filters harmful script code and escapes data of all POST data
from the user submitted form.
*****************************************************************/

foreach($_POST as $key => $value) {
$data[$key] = filter($value);
}



/************************ SERVER SIDE VALIDATION **************************************/
/********** This validation is useful if javascript is disabled in the browswer ***/


if(empty($data['full_name']) || strlen($data['full_name']) < 4)
{
$err[] = " Неверное имя. Пожалуйста, введите 3 или более символов";
//header("Location: register.php?msg=$err");
//exit();

}

// Validate User Name
if (!isUserID($data['user_name'])) {
$err[] = "Неверное имя пользователя.";
//header("Location: register.php?msg=$err");
//exit();

}

// Validate Email
if(!isEmail($data['usr_email'])) {
$err[] = "Неверный адрес электронной почты.";
//header("Location: register.php?msg=$err");
//exit();

}
// Check User Passwords
if (!checkPwd($data['pwd'],$data['pwd2'])) {
$err[] = "Неверный пароль.Введите 5 или более символов";
//header("Location: register.php?msg=$err");
//exit();

}

$user_ip = $_SERVER['REMOTE_ADDR'];

// stores sha1 of password
$sha1pass = PwdHash($data['pwd']);

// Automatically collects the hostname or domain like example.com)
$host = $_SERVER['HTTP_HOST'];
$host_upper = strtoupper($host);
$path = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');

// Generates activation code simple 4 digit number
$activ_code = rand(1000,9999);

$usr_email = $data['usr_email'];
$user_name = $data['user_name'];

/************ USER EMAIL CHECK ************************************
This code does a second check on the server side if the email already exists. It
queries the database and if it has any existing email it throws user email already exists
*******************************************************************/


$rs_duplicate = mysql_query("select count(*) as total from users where user_email='$usr_email' OR user_name='$user_name'") or die(mysql_error());
list($total) = mysql_fetch_row($rs_duplicate);

if ($total > 0)
{
$err[] = "Имя пользователя или электронная почта уже существует. Пожалуйста, попробуйте еще раз с другим именем пользователя или электронной почтой.";
//header("Location: register.php?msg=$err");
//exit();

}
/***************************************************************************/

if(empty($err)) {



$sql_insert = "INSERT into `users`
(`full_name`,`user_email`,`pwd`,`last_name`,`tel`,`fax`,`website`,`date`,`users_ip`,`activation_code` ,`country`,`user_name`
)
VALUES
('
$data[full_name]','$usr_email','$sha1pass','$data[last_name]','$data[tel]','$data[fax]','$data[web]'
,now(),'
$user_ip','$activ_code','$data[country]','$user_name'
)
"
;

mysql_query($sql_insert,$link) or die("Insertion Failed:" . mysql_error());
$user_id = mysql_insert_id($link);
$md5_id = md5($user_id);
mysql_query("update users set md5_id='$md5_id' where id='$user_id'");
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.