Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с кодировкой utf 8

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: ошибка кодировки команды inset
borysnn
Отправлено: 01 Июня, 2010 - 20:18:56
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




история такая сайт был на денвере настроен на utf
все файлы делал в дримвивеере там тоже устанавливал utf
сервер удаленый тоже на utf
есть фаил html с формой которую обрабатыват php фаил и заносит коментарии в таблицу на удаленном севере и вновь возвращает html с внесенными данными

на локалке все работало

в html есть строка
CODE (html):
скопировать код в буфер обмена
  1.  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  2.  

в файле обработчике формы нет ничего про кодировку

результат когда обнавилась страница html текст был русский в коментариях но вместо буквы ш стоят вопросы

захожу на сервер в базу и смотрю как заносяться данные в таблицу - там одни вопросики и т.д.

пожалуйста помогите очень сложно сразу во всем разобраться - я только начинаю
 
 Top
Champion Супермодератор
Отправлено: 01 Июня, 2010 - 20:25:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Кодировка соединения, кодировка таблицы, кодировка базы?
 
 Top
borysnn
Отправлено: 01 Июня, 2010 - 20:32:33
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




Champion пишет:
Кодировка соединения, кодировка таблицы, кодировка базы?


я так думаю что у меня нет кодировки соединения ??
потому что в таблице прописывал а базаа уже в utf8

как делать кодировку соединения и в каком файле ?? где форма для заполнения или в файле php который обрабатывает данные POST и заносит их в таблицу

(Отредактировано автором: 01 Июня, 2010 - 20:33:43)

 
 Top
altermann
Отправлено: 01 Июня, 2010 - 21:24:48
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Март 2010  
Откуда: Днепропетровск


Помог: 6 раз(а)




Я прописываю после установки соединения
PHP:
скопировать код в буфер обмена
  1. mysql_query ('SET NAMES utf8');
  2. mysql_query ('SET CHARACTER SET utf8');


-----
Я прирожденный кузнец, я не могу не куя!
 
 Top
borysnn
Отправлено: 01 Июня, 2010 - 22:06:51
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




altermann пишет:
Я прописываю после установки соединения
PHP:
скопировать код в буфер обмена
  1. mysql_query ('SET NAMES utf8');
  2. mysql_query ('SET CHARACTER SET utf8');


добавка этиз кодов не помогла
ошибка идет именно при запписи в таблицу базы данных
если вывести на экран данные поступившие через post формы в php код до вненсения в базу то все буквы хорошие после команды insert в таблице идет бардак ввиде ? и врякого того

а когда обнавляет страницу то вылитают буквы ш и еще некоторые
(Добавление)
привожу пример кода

фаил php соединения
PHP:
скопировать код в буфер обмена
  1. <?
  2. $db = mysql_connect ("localhost", "user", "12345");
  3. mysql_select_db ("koment", $db);
  4. mysql_query ('SET NAMES utf8');
  5. mysql_query ('SET CHARACTER SET utf8');
  6. ?>



фаил обработчик

PHP:
скопировать код в буфер обмена
  1.  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6. <title>Документ без названия</title>
  7. </head>
  8.  
  9. <body>
  10. <?PHP
  11. include ("bd.php"); /*вставляем код из файла соединенияс базой*/
  12. if (isset ($_POST['auther']))
  13.         {$auther = $_POST['auther'];}
  14. if (isset ($_POST['komen']))
  15.         {$komen = $_POST['komen'];}
  16. if (isset ($_POST['pr']))
  17.         {$pr = $_POST['pr'];}                    
  18. if (isset ($_POST['sub_kom']))
  19.         {$sub_kom = $_POST['sub_kom'];}
  20. if (isset ($_POST['stat']))
  21.         {$stat = $_POST['stat'];}
  22.  
  23. if (isset ($sub_kom))/* проверяем факт перехода к фалу по кнопке отослать из файла со статьей*/
  24.         {
  25.         /*выполнение при условие что кнопку отправить исполнено*/
  26.         if (isset($auther)) /* если у нас существует переменная автор*/
  27.         {trim($auther);} /*тогда обрезаем пробелы до и после имя автора*/
  28.         else {$auther = "";} /*если автора не существует присваеваем переменой автор пустоту*/
  29.                 if (isset($komen)) {trim($komen);}
  30.                 else {$komen = "";}
  31.                
  32.                 if (empty ($auther) or empty ($komen)) /*если  переменная автор или переменная коментарии пусто то */
  33.                 {exit  ("<p>Вы ввели не всю информацию, вернитесь назад и заполните все поля. <br> <input name='back' type='button' value='Вернуться назад' onclick='javascript:history.back();'></p>");  /*с помещением кнопки возвратат назад*/
  34.                 }
  35.                
  36.                 $auther = stripslashes ($auther); /*убераем все обратные слеши*/
  37.                 $komen = stripslashes ($komen);
  38.                 $auther = htmlspecialchars ($auther); /*убераем все html коды*/
  39.                 $komen = htmlspecialchars ($komen);
  40.                 $result = mysql_query ("SELECT sum FROM kom_set", $db);
  41.                 $myrow = mysql_fetch_array ($result) ;
  42.                 if ( $pr == $myrow ["sum"])
  43.                         {
  44.                 $data = date ("Y-m-d");
  45.                 $result2 = mysql_query ("INSERT INTO koment (stat,auther,komen,data) VALUES ('$stat', '$auther', '$komen', '$data')",$db);
  46.                 /*занесение в таблицу даных из формы*/
  47.                 $address = "b0104@rambler.ru";
  48.                 $subject = "Новый комментарий к заметке";
  49.                 $result3 = mysql_query ("SELECT fname FROM fale WHERE id='$stat'", $db);
  50.                 $myrow3 = mysql_fetch_array ($result3);
  51.                 $fname = $myrow3 ["fname"];
  52.                 $messege = "Появился комментарий к странице - " .$fname."\n
  53.                 Комментарий добавил (а): ".$auther." \n Текст комментария: ".$komen."\n Сылка на заметку http://localhost/tgraf/".$fname."";
  54.                 mail ($address, $subject, $messege, "Content-type: text/plain; Charset=utf8\r\n");
  55.                 echo "<html><head>
  56.                 <meta http-equiv='Refresh' content='0; url= ../$fname'>    <!--/*другой код url=view_post.php?id=$id*/-->
  57.                 </html></head>";
  58.                 exit ();
  59.                 }
  60.                 else
  61.                                 {
  62.                 exit  ("<p>Вы ввели неверную сумму с картинки на предыдущей странице. <br> <input name='back' type='button' value='Вернуться назад' onclick='javascript:history.back();'></p>");  /*с помещением кнопки возвратат назад*/}
  63.                                
  64.         }
  65. ?>
  66. </body>
  67. </html>
  68.  
 
 Top
altermann
Отправлено: 01 Июня, 2010 - 22:54:54
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Март 2010  
Откуда: Днепропетровск


Помог: 6 раз(а)




В PHPMyAdmin при выборе БД показывается список таблиц, там есть колонка "Сравнение", какое значение в самой последней строке выделенной жирным?

Как вариант выполнить эти запросы через PHPMyAdmin:
CODE (SQL):
скопировать код в буфер обмена
  1. ALTER DATABASE `database` CHARACTER SET 'utf8';
  2. ALTER DATABASE `database` COLLATE 'utf8_general_ci';


Была у меня такая фигня, лечил каким-то запросом через PHPMyAdmin, но убейте не могу вспомнить каким Улыбка

(Отредактировано автором: 01 Июня, 2010 - 22:59:10)



-----
Я прирожденный кузнец, я не могу не куя!
 
 Top
borysnn
Отправлено: 02 Июня, 2010 - 07:39:51
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




как это выглядит на удаленном сервере из pphpmyadmin
Прикреплено изображение (Нажмите для увеличения)
1.jpg

(Отредактировано автором: 02 Июня, 2010 - 08:18:51)

 
 Top
altermann
Отправлено: 02 Июня, 2010 - 08:19:13
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Март 2010  
Откуда: Днепропетровск


Помог: 6 раз(а)




У тебя в последней строке в таблице на рисунке кодировка стоит windows1251.


-----
Я прирожденный кузнец, я не могу не куя!
 
 Top
borysnn
Отправлено: 02 Июня, 2010 - 08:19:23
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




страно не знаю от куда это там появилось но кадировка 1251 относилась к базе, а не к таблице, спасибо что заметили - я исправил,
но код кодподключения который ниже мне уже дал верный вариант до исправления - хотя изначально может быть ошибка была имено по причине не врного значения "сравнения" для базы



Решение вопроса найдено
фаил соединения должен был выглядить так
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. $dbhost = "localhost";
  5. $dbname = "имя вашй базы";
  6. $dbuser = "имя пользователя";
  7. $dbpass = "пароль пользователя";
  8.  
  9.  
  10. $db = mysql_connect($dbhost,$dbuser,$dbpass) or die(mysql_error());
  11. mysql_query ("SET CHARACTER SET 'utf8'", $db);
  12. mysql_query ("set character_set_client='utf8'");
  13. mysql_query ("set character_set_results='utf8'");
  14. mysql_query ("set collation_connection='utf81_general_ci'");
  15. mysql_query ("SET NAMES utf8");
  16. mysql_select_db($dbname,$db) or die("Could not find db");
  17. if (!headers_sent())
  18. {
  19. };
  20. ?>
  21.  


покрайней мере мне помогло
(Добавление)

(Отредактировано автором: 02 Июня, 2010 - 08:27:20)

 
 Top
altermann
Отправлено: 02 Июня, 2010 - 11:44:51
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Март 2010  
Откуда: Днепропетровск


Помог: 6 раз(а)




Думаю что из-за неверного сравнения. У меня так один скрипт работал на локальной машине без проблем, но перенес на хостинг и начались "вопросики". Поиск проблемы привел к базе, потому что скрипты без изменений были скопированы на хостинг с локальной машины. Потом нашел в чем проблема была, именно в этом сравнении для БД, и исправлял запросом через PHPMyAdmin. А появляется она при создании базы, как я понял это в настройках хостинга у меня меняется.


-----
Я прирожденный кузнец, я не могу не куя!
 
 Top
JustUserR
Отправлено: 03 Июня, 2010 - 17:42:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




altermann пишет:
Как вариант выполнить эти запросы через PHPMyAdmin:
ALTER DATABASE `database` CHARACTER SET 'utf8';
ALTER DATABASE `database` COLLATE 'utf8_general_ci';
Была у меня такая фигня, лечил каким-то запросом через PHPMyAdmin, но убейте не могу вспомнить каким
При работе с кодировками на БД не все так просто поскольку изменение кодировки за счет явно перекодировки или за счет изменения трактования данной кодировки это разные вещи - ведь если данные из кодировки CP1251 были сохранены в UTF8 и трактовались таким образом то простая перекодировка пользы не даст - ведь ошибочные данные которые на самом деле в CP1251 будут трактованы как UTF8 и переведены в CP1251 в результате чего станут окончательно нечитаемыми - по этой причине в таком случае нужно менять только трактовку без перекодировки


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Andrey123
Отправлено: 28 Января, 2012 - 02:34:12
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




Не понял
Привет, у меня была такая же проблема, целый день сидел мучался с кодировкой.
Не на всех хостингах работало одиннаково.
В общем чтобы решить эту преблему с кодировкой. При написании скриптов лучше придерживаться следующих рекомендаций.

Я постарался их для вас написать тут

http://phpwebmaster[dot]ru/blogs/php/charset[dot]html


Надеюсь вам будет полезна данная информация.

(Отредактировано автором: 28 Января, 2012 - 02:34:44)

 
 Top
Hachiro
Отправлено: 12 Июля, 2012 - 16:17:45
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




Народ помогите с кодом. У меня на сайте Ucoz проблема в новостях вставляю картинку но она не хочет вставляться в рамочку что делать вот код Вида материалов

<!--sssss-->
<div class="VMT">$TITLE$$MODER_PANEL$</div>
<div class="vidMatFon">
<div align="center">
<div class="imgVM">
<div class="wotermark"><img src="$OTHER1$"></div>
<img src="$IMG_URL1$" width="490px" height="130px">
<div class="VMDetal">
<b>Просмотров: $READS$ | Комментариев: $COMMENTS_NUM$</b>
</div>
</div><br>
<div style="margin-right:60px;">
$MESSAGE$
</div>
</div>
<div class="VMSee"><a href="$ENTRY_URL$"><img src="/WGStudio_pabl/imgs/VMSee.png"></a></div>
</div>
<div class="VMShaddow"></div>
<!--sssss-->​
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB