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 :: MYSQL и кодировки

 PHP.SU

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


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

> Без описания
Get
Отправлено: 31 Июля, 2011 - 22:23:23
Post Id


Новичок


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


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




Доброго времени суток. Подскажите на вопрос mysql и кодировок.
Создал через консоль БД, в ней таблицу test. Закинул в неё пару русских строк. В итоге всяких манипуляций с set names cp1251 и прочим, о которых упоминал гугл, через консоль все выводится нормально. Т.е. русский текст читается. Но обычный скрипт чтения БД
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. // запросим данные таблицы
  3.                 $query = "select * from test";
  4.                 $res = mysql_query($query);
  5.                 if(!$res) {
  6.  
  7.                         $_SESSION['error_message'] = mysql_error();
  8.  
  9.                         return false;
  10.                 }
  11.  
  12.                 $number = mysql_num_rows($res);
  13.                 for($i = 0; $i < 10; $i++) {
  14.                         $row = mysql_fetch_array($res);
  15.                         //mysql_set_charset("cp1251");
  16.                         echo($row[0]);
  17.                 }
  18.  


выводит крякозябры. Почему консоль читает нормально, а скрипт нет?
 
 Top
OrmaJever Модератор
Отправлено: 31 Июля, 2011 - 22:26:28
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




Get пишет:
Почему консоль читает нормально, а скрипт нет?

не скрипт а браузер, ему нужно ткнуть носом в кодировку
PHP:
скопировать код в буфер обмена
  1. header('Content-type: text/html; charset=windows-1251');


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Get
Отправлено: 31 Июля, 2011 - 22:45:24
Post Id


Новичок


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


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




Вставил в начало скрипта, не помогает. Всё равно крякозябры

Вот кстати на запрос show variables like "char%" выдаётся:
character_set_client: cp1251;
character_set_connection: cp1251;
character_set_database: utf8;
character_set_filesystems: binary;
character_set_results: cp1251;
character_set_server: utf8;
character_set_system: utf8;

Опыта пока что нету, может быть тут поменять что нить?
 
 Top
Arni
Отправлено: 31 Июля, 2011 - 23:48:42
Post Id



Гость


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


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




Get пишет:
Вставил в начало скрипта, не помогает. Всё равно крякозябры

Вот кстати на запрос show variables like "char%" выдаётся:
character_set_client: cp1251;
character_set_connection: cp1251;
character_set_database: utf8;
character_set_filesystems: binary;
character_set_results: cp1251;
character_set_server: utf8;
character_set_system: utf8;

Опыта пока что нету, может быть тут поменять что нить?


Ну возможно потому что уже в базу залито криво. Если вставлять нове записи то они нормально уже отображаются?

(Отредактировано автором: 31 Июля, 2011 - 23:49:14)

 
 Top
Get
Отправлено: 01 Августа, 2011 - 05:06:04
Post Id


Новичок


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


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




База как таковая тестовая. Создал заново базу, закинул пару строк на русском.
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. create database test;
  3. use test;
  4. create table `test` (`test` varchar(60));
  5. insert into `test` values ('фывфыв'),('йцдлуйц');
  6.  

В консоли читается нормально, а вот при работе скрипта браузер выводит крякозябры.
Кстати в phpMyAdmin тоже крякозябры. Только в консоли нормально.
 
 Top
LIME
Отправлено: 01 Августа, 2011 - 08:00:10
Post Id


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


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


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




Get так вы заполняете базу через консоль
значит в 866 по умолчанию
вы заполняйте скриптом или в phpmyadmin
Arni пишет:
Ну возможно потому что уже в базу залито криво.

(Отредактировано автором: 01 Августа, 2011 - 08:21:33)

 
 Top
Мелкий Супермодератор
Отправлено: 01 Августа, 2011 - 08:50:18
Post Id



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


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


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




Get пишет:
В итоге всяких манипуляций с set names cp1251 и прочим, о которых упоминал гугл, через консоль все выводится нормально.

Ну так и из скрипта надо сказать, какую кодировку ждём. Тем же самым запросом set names или, если окружение позволяет, функцией mysql_set_charset.


-----
PostgreSQL DBA
 
 Top
Get
Отправлено: 01 Августа, 2011 - 17:48:05
Post Id


Новичок


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


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




Дело действительно оказалось в том, что я вводил данные через консоль

http://www[dot]mysql[dot]ru/webboard/ind[dot][dot][dot]1=10971&n2=1

Благодарю.
 
 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