Перейти к содержимому



При переносе на другой хостинг сбилась кодировка комментариев

#1

Поделиться сообщением #1



cap4369

cap4369
  • Неактивные
  • 62 сообщений
  • Репутация: 1
0

Отправлено 29 Декабрь 2013 - 17:46

Здравствуйте!
Может кто сталкивался с такой проблемой? Перенес сайт на хостинг, все работает нормально за исключением добавления комментариев, они почему- то заносятся в базу данных в кодировке CP1251. Тех служба мне говорит, что скрипт в этой кодировке. Но у меня в текстовом редакторе выставлена кодировка UTF-8 по умолчанию. Да и на Денвере работало без проблем. Я на всякий случай еще раз сохранил скрипт в UTF-8.
Да и в самом скрипте указано, что переменные, значения полей указываются в этой кодировке. Вот код обработчика:
<?php
session_start();
require "config.php";
if($_POST['submit']) {
$name = trim(mysql_real_escape_string(mb_substr($_POST['name'],0,20,'UTF-8')));
$comment = trim(mysql_real_escape_string(mb_substr($_POST['comment'],0,1000,'UTF-8')));
$captcha = $_POST['captcha'];

if(empty($name)) $error = " <p><b>Введите имя</b></p>";
if(empty($comment)) $error .= "<p><b>Введите комментаий</b></p>";
if(empty($captcha)) $error ."<p><b>Введите ответ</b></p>";
if($captcha != $_SESSION['res_captcha']) $error .= "<p><b>Не верный ответ</p>";

if(empty($error)){
  $res = mysql_query("INSERT INTO `comments_fest` SET `name` = '$name', `comment` = '$comment'");
  if(mysql_affected_rows() >0) {
   $_SESSION['res_comm'] = '<p><strong>Спасибо! Ваше сообщение добавлено.</strong></p>';
   header("Location: $site_url?option=blysc#res_comm");
   exit();
  }
  else {
   $_SESSION['res_comm'] = '<p><strong>Ваше сообщение не добавлено. Попробуйте позже.</strong></p>';
   header("Location: $site_url?option=blysc#res_comm");
   exit();
  }
}
else {
  $_SESSION['res_comm'] = '<p><strong>Ошибка заполнения формы:</strong></p>'.$error;
  $_SESSION['name'] = $name;
  $_SESSION['comment'] = $comment;
  header("Location: $site_url?option=blysc#res_comm");
  exit();
}
}
?>

 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Перенос сайта на новый хостинг
  2. Ошибка при переносе на другой хост
  3. Вопрос по поводу переноса сайта
  4. Можно ли так перенести сайт на другой хостинг
  5. Ошибки при переносе сайта

#2

Поделиться сообщением #2



Ixman

Ixman
  • Пользователь PRO
  • 2 574 сообщений
  • Репутация: 603

Отправлено 29 Декабрь 2013 - 18:08

В файл htaccess добавьте следующее

php_value default_charset UTF-8

  • 0


#3

Поделиться сообщением #3



cap4369

cap4369
    Topic Starter
  • Неактивные
  • 62 сообщений
  • Репутация: 1

Отправлено 29 Декабрь 2013 - 18:15

На хостинге стоит запрет на php_value и php_flag. И у меня в .htaccess обозначено AddDefaultCharset utf-8
Вот ссылка на страницу http://www.s-lapkovs...m/?option=blysc
  • 0

#4

Поделиться сообщением #4



Ixman

Ixman
  • Пользователь PRO
  • 2 574 сообщений
  • Репутация: 603

Отправлено 29 Декабрь 2013 - 18:16

А при подключении к базе кодировка указана?
  • 0


#5

Поделиться сообщением #5



cap4369

cap4369
    Topic Starter
  • Неактивные
  • 62 сообщений
  • Репутация: 1

Отправлено 29 Декабрь 2013 - 18:26

Нет, а как она указывается? Но ведь в других формах, например в админке, данные в БД заносятся в нормальной кодировке.
  • 0

#6

Поделиться сообщением #6



Ixman

Ixman
  • Пользователь PRO
  • 2 574 сообщений
  • Репутация: 603

Отправлено 29 Декабрь 2013 - 18:33

Ну тогда не знаю почему так происходит, возможно где-то ошибка в кодировке всё же.
Для MySQL так
mysql_query('SET NAMES `utf8`');

  • 0


#7

Поделиться сообщением #7



cap4369

cap4369
    Topic Starter
  • Неактивные
  • 62 сообщений
  • Репутация: 1

Отправлено 29 Декабрь 2013 - 18:54

Все, разобрался, спасибо! Эту строку нужно писать в скрипте перед запросом

$res = mysql_query("INSERT INTO `comments_fest` SET `name` = '$name', `comment` = '$comment'");


  • 0

#8

Поделиться сообщением #8



Ixman

Ixman
  • Пользователь PRO
  • 2 574 сообщений
  • Репутация: 603

Отправлено 30 Декабрь 2013 - 09:42

cap4369, какую именно? Ту что я дал с кодировкой? Её лучше указать вместе с подключением к БД, тогда она будет распространена для всех запросов. Иначе потом могут быть проблемы с дампом базы данных. Я сам когда-то так полностью потерял базу
  • 0


#9

Поделиться сообщением #9



cap4369

cap4369
    Topic Starter
  • Неактивные
  • 62 сообщений
  • Репутация: 1

Отправлено 30 Декабрь 2013 - 17:47

Спасибо, переделал
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru