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 :: Проблема с кодировкой

 PHP.SU

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


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

> Описание: Не знал куда лучше написать, сюда или в раздел "Кодировки и все смежное". Решил все.таки сюда
Ishan
Отправлено: 12 Ноября, 2014 - 11:25:14
Post Id



Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Нояб. 2014  


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




Здравствуйте, помогите пожалуйста, разобраться.
Я пытаюсь с нуля написать простую браузерную мобильную текстовую игру. Хотя бы для того, чтобы понять как все это происходит. И неожиданно столкнулся с проблемой.
В базе данных, в таблице "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.  

Прикреплено изображение (Нажмите для увеличения)
1.PNG
 
 Top
RickMan
Отправлено: 12 Ноября, 2014 - 11:34:41
Post Id


Участник


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


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




Переходи полностью на utf-8 и не будешь иметь проблем.
 
 Top
Ishan
Отправлено: 12 Ноября, 2014 - 11:43:20
Post Id



Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Нояб. 2014  


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




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

Но спасибо за совет, если ничего не получиться, так и с делаю.Хорошо

(Отредактировано автором: 12 Ноября, 2014 - 11:44:06)

 
 Top
Dastor
Отправлено: 12 Ноября, 2014 - 11:58:00
Post Id


Гость


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


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




Посмотри что возвращает функция mysql_client_encoding()
 
 Top
Мелкий Супермодератор
Отправлено: 12 Ноября, 2014 - 12:04:04
Post Id



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


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


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




Лучше как раз во всё смежное с кодировками, перенёс.

Готов поспорить, что кодировку соединения с mysql вы не указали: http://si1.php.net/manual/en/mys...epts.charset.php


-----
PostgreSQL DBA
 
 Top
Ishan
Отправлено: 12 Ноября, 2014 - 12:58:03
Post Id



Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Нояб. 2014  


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




Мелкий пишет:
Готов поспорить, что кодировку соединения с mysql вы не указали: http://si1.php.net/manual/en/mys...epts.charset.php


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

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

Спасибо за помощь.
 
 Top
esterio
Отправлено: 12 Ноября, 2014 - 13:06:34
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




попробую обьяснить. все символы имеют свой код. в разных кодировках одно и то число означает разный символ. строка ето всего навсего набор символов (байт). когда строка была задана в одной кодировке, а отображаеться в другой, то возникают как раз всякие знакы вопросов, кубики и прочее.
UPD. щас мелкий обьяснит о ANSI и прочих стандартах. он это уже не раз делал )

(Отредактировано автором: 12 Ноября, 2014 - 13:08:30)

 
 Top
Мелкий Супермодератор
Отправлено: 12 Ноября, 2014 - 13:14:59
Post Id



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


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


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




Не, нет желания. Но ANSI всё равно не стандарт. Это стандартизирующая организация.


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Кодировки и все смежное »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB