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
Форумы портала PHP.SU :: Версия для печати :: Проблема с кодировкой
Форумы портала PHP.SU » » Кодировки и все смежное » Проблема с кодировкой

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

1. Ishan - 12 Ноября, 2014 - 11:25:14 - перейти к сообщению
Здравствуйте, помогите пожалуйста, разобраться.
Я пытаюсь с нуля написать простую браузерную мобильную текстовую игру. Хотя бы для того, чтобы понять как все это происходит. И неожиданно столкнулся с проблемой.
В базе данных, в таблице "coliseum_monstr" хранятся имена мобов на русском языке. Сама база данных, все таблицы в ней в кодировке "cp1251_general_ci". Страницы, с которыми возникает эта проблема, все в той-же кодировке. В исходном файле, в шапке, кодировка также указана:

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

Опять же и браузер открывает страницу в кодировке windows-1251. И тем не менее на откравшеися странице имя моба, взятое из базы данных, в кодировке utf-8(Скрин прикреплен, можете сами посмотреть). В чем может быть проблема, как это исправить?

На всякий случай, так у меня выводится список мобов, взятый из базы данных, все работает, только проблема с кодировкой имени моба:



PHP:
скопировать код в буфер обмена
  1. $lists = mysql_query("SELECT id, login, avatar, status, award FROM `coliseum_monstr`");
  2. $mob = mysql_fetch_array($lists);
  3. do{
  4. if($mob['status']=='usual'){
  5. $color='#9b8869';
  6. $status='Обычный';
  7. $img_status='1(1).png';
  8. }if($mob['status']=='rare'){
  9. $color='#9bcd69';
  10. $status='Редкий';
  11. $img_status='2(1).png';
  12. }
  13. printf('<a href="/modules/coliseum/battle.php?id='.$mob['id'].'"><img class="mini_mob" src="/images/monstr/coliseum/'.$mob['avatar'].'" alt="" class="fl">
  14. <img src="/images/icon/2hit.png" alt=""><span style="color:#FC6">'.$mob['login'].'</span></a><br>
  15. <img src="/images/icon/'.$img_status.'" alt=""><span style="color:'.$color.'">'.$status.'</span><br>
  16. <span style="color:#999">Награда: '.$mob['award'].' опыта</span>
  17. <div style="clear:both;"></div>
  18. <div class="mini-line"></div>');
  19. }while($mob = mysql_fetch_array($lists));
  20.  
2. RickMan - 12 Ноября, 2014 - 11:34:41 - перейти к сообщению
Переходи полностью на utf-8 и не будешь иметь проблем.
3. Ishan - 12 Ноября, 2014 - 11:43:20 - перейти к сообщению
Это, конечно, неблохой вариант, но я пишу эту игру как раз ради того чтобы понять как все происходит, почему возникают те или иные ошибки. Е сли я сменю кодировку я избавлюсь от проблемы, но я так и не пойму почему она возникла, а именно это мне и нужно.

Но спасибо за совет, если ничего не получиться, так и с делаю.Хорошо
4. Dastor - 12 Ноября, 2014 - 11:58:00 - перейти к сообщению
Посмотри что возвращает функция mysql_client_encoding()
5. Мелкий - 12 Ноября, 2014 - 12:04:04 - перейти к сообщению
Лучше как раз во всё смежное с кодировками, перенёс.

Готов поспорить, что кодировку соединения с mysql вы не указали: http://si1.php.net/manual/en/mys...epts.charset.php
6. Ishan - 12 Ноября, 2014 - 12:58:03 - перейти к сообщению
Мелкий пишет:
Готов поспорить, что кодировку соединения с mysql вы не указали: http://si1.php.net/manual/en/mys...epts.charset.php


Вы правы, я этого не сделал.

В принципе проблема решена, но если честно, я так и не понял в чем причина.

Спасибо за помощь.
7. esterio - 12 Ноября, 2014 - 13:06:34 - перейти к сообщению
попробую обьяснить. все символы имеют свой код. в разных кодировках одно и то число означает разный символ. строка ето всего навсего набор символов (байт). когда строка была задана в одной кодировке, а отображаеться в другой, то возникают как раз всякие знакы вопросов, кубики и прочее.
UPD. щас мелкий обьяснит о ANSI и прочих стандартах. он это уже не раз делал )
8. Мелкий - 12 Ноября, 2014 - 13:14:59 - перейти к сообщению
Не, нет желания. Но ANSI всё равно не стандарт. Это стандартизирующая организация.

 

Powered by ExBB FM 1.0 RC1