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 » PHP » SQL и Архитектура БД » И снова кодировка.....

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

1. SergeyQW - 24 Января, 2009 - 15:23:08 - перейти к сообщению
Прочитал очень много тем, но ничего не помогает.... Постараюсь свою проблемму очень подробно описать.

Использую связку: apache_2.2.11+php-5.2.8+mysql-essential-5.1.30.
Система: WinXP SP3.

Постараюсь описать все очень подробно:
После установки Apace+PHP приступил к установке БД. В настройках БД(когда вылетело окно с вопросом о кодировке) указал cp1251. Установил pma. Импортировал БД. Далее выполняю запрос чтобы вывести содержание таблицы на экран. Получаю ??????. В pam стоит сравнение cp1251_general_ci в этой таблице. А на главной странице pam Сопоставление соединения с MySQL:cp1251_general_ci. В my.ini прописано default-character-set=cp1251. А теперь начинается самое интересное:

Пишу
PHP:
скопировать код в буфер обмена
  1. $db_link=mysql_connect($cfg["db"]["host"], $cfg["db"]["user"], $cfg["db"]["pass"]);
  2. mysql_query("SET NAMES cp1251");   //тут еще раз указываю кодировку
  3. mysql_query("set character_set_client='cp1251'");
  4. mysql_query("set character_set_results='cp1251'");
  5. mysql_query("set collation_connection='cp1251'");
  6. $mas=mysql_query("SELECT * FROM `questions`");
  7. while(true)
  8. {
  9.         $mass=mysql_fetch_array($mas);
  10.         if(!$mass) break;
  11.         $qw=$mass["question"];
  12. /*Обратите сюда внимание!
  13.   Я меняю кодировку из utf-8 в 1251!! */       
  14. $qw = iconv("utf-8","windows-1251",$qw);
  15.         $ans=$mass["answer"];
  16.         echo("$qw<br>");
  17. }
  18.  
  19.  

И только после этого получаю нормальный, русский текст!
В шапке страницы тоже указано windows-1251.
Вопрос: как всетаки сделать так, чтобы все правильно отображалось без этих извращений?
2. valenok - 24 Января, 2009 - 15:33:12 - перейти к сообщению
дык у тебя текст в базе в utf8 получается же
Может не стоит его приводить к cp1251 ?
Попробуй поработать с ним в юникоде
3. SergeyQW - 24 Января, 2009 - 15:40:13 - перейти к сообщению
Может так и получается... Но... В pam в кодироке cp1251 все ок.... и + я же указал
Цитата:
SET NAMES cp1251
что хочу данные видеть в 1251. По идее же он мне должен именно в 1251 отдавать! А получается, что нет, а если я пишу просто без
Цитата:
SET NAMES cp1251
, то все в крякозябрах.... Мой мозг сломлен... Восстание машин какое то......
4. valenok - 24 Января, 2009 - 16:50:13 - перейти к сообщению
Оно вам не меняет кодировку. Оно устанавливает кодировку подключения.
А в базе данные по прежнему в utf8
5. SergeyQW - 24 Января, 2009 - 16:56:52 - перейти к сообщению
Оу.. буду знать. Кстати, если я убираю
PHP:
скопировать код в буфер обмена
  1. mysql_query("SET NAMES cp1251");   //тут еще раз указываю кодировку
  2. mysql_query("set character_set_client='cp1251'");
  3. mysql_query("set character_set_results='cp1251'");
  4. mysql_query("set collation_connection='cp1251'");

Убираю функцию изменения кодировки,и в шапке пишу utf-8, то все равно все в вопросах!!! А если бы база отдавала все в utf-8 то по идее этого не должно было бы быть
6. valenok - 24 Января, 2009 - 17:35:31 - перейти к сообщению
Это всё уберите и iconv тоже
и оставьте mysql_query('SET NAMES \'UTF8\'');
Кстати, попробуйте сначала кавычки поставить в
mysql_query('SET NAMES \'cp1251\'');
7. SergeyQW - 24 Января, 2009 - 17:39:51 - перейти к сообщению
Это все убрал.. не помогает..... Чет у меня тут явно не то..((
8. valenok - 24 Января, 2009 - 18:11:11 - перейти к сообщению
Так, попробуй еще раз. Я отредактировал предыдущее сообщение.
9. SergeyQW - 24 Января, 2009 - 18:31:51 - перейти к сообщению
К сожалению это тоже не помогло..... Кстати еще вопрос: а имеет смысл ставить 6 мускул?

Блин.... Уже все настройки сравнил с одним правильно работающим хостингом.... Все одинаково до каждой запятой и точки.... уже и не знаю что делать.... 2 раза сервер переставил!!
10. valenok - 24 Января, 2009 - 19:23:33 - перейти к сообщению
Ладно, поехали с самого начала

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $db_link=mysql_connect($cfg["db"]["host"], $cfg["db"]["user"], $cfg["db"]["pass"]);
  4. mysql_select_db('БАЗА ДАННЫХ');
  5.  
  6.  mysql_query("SET NAMES 'UTF8'");  
  7. // mysql_query("SET NAMES 'cp1251'");
  8.  
  9. $mas=mysql_query("SELECT * FROM `questions`");
  10. while( $mass=mysql_fetch_array($mas))
  11.     echo $mass["question"],'<br/>';
  12.  
  13.  


Что происходит в первом случаем с ютф8
и что во втором, если ютф закомментировать и раскомментировать cp
11. SergeyQW - 24 Января, 2009 - 19:39:54 - перейти к сообщению
1ый случай- сергей
2ой-сергей
но если в браузере поставить кодироку UTF-8, то второй случай отображается правильно
а 1ый всегда кроказябры(

1ый случай - mysql_query("SET NAMES 'UTF8'")
2ой - mysql_query("SET NAMES 'cp1251'");
12. valenok - 24 Января, 2009 - 21:53:55 - перейти к сообщению
В первом случае у вас из базы достаётся правильно и коверкается браузером
во втором коверкается базой и выводится правильно =)

Ставьте в браузере ютф8 =)
13. SergeyQW - 25 Января, 2009 - 10:46:00 - перейти к сообщению
пробовал... тоже не помогает....
CODE (text):
скопировать код в буфер обмена
  1. <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
  2. <?php
  3. include"includes/cfg.php";
  4. $db_link=mysql_connect($cfg["db"]["host"], $cfg["db"]["user"], $cfg["db"]["pass"]);
  5. mysql_select_db('qqq');
  6.  
  7. //mysql_query("SET NAMES 'UTF8'");
  8. //mysql_query("SET NAMES 'cp1251'");
  9.  
  10. $mas=mysql_query("SELECT * FROM `qqq`");
  11. while( $mass=mysql_fetch_array($mas))
  12.     echo $mass["qqq"],'<br/>';
  13.  
  14.  
  15. ?>
выводит "???�?????�??"
CODE (text):
скопировать код в буфер обмена
  1. <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
  2. <?php
  3. include"includes/cfg.php";
  4. $db_link=mysql_connect($cfg["db"]["host"], $cfg["db"]["user"], $cfg["db"]["pass"]);
  5. mysql_select_db('qqq');
  6.  
  7. mysql_query("SET NAMES 'UTF8'");
  8. //mysql_query("SET NAMES 'cp1251'");
  9.  
  10. $mas=mysql_query("SELECT * FROM `qqq`");
  11. while( $mass=mysql_fetch_array($mas))
  12.     echo $mass["qqq"],'<br/>';
  13.  
  14.  
  15. ?>
выводит "сергей"
CODE (text):
скопировать код в буфер обмена
  1. <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
  2. <?php
  3. include"includes/cfg.php";
  4. $db_link=mysql_connect($cfg["db"]["host"], $cfg["db"]["user"], $cfg["db"]["pass"]);
  5. mysql_select_db('qqq');
  6.  
  7. //mysql_query("SET NAMES 'UTF8'");
  8. mysql_query("SET NAMES 'cp1251'");
  9.  
  10. $mas=mysql_query("SELECT * FROM `qqq`");
  11. while( $mass=mysql_fetch_array($mas))
  12.     echo $mass["qqq"],'<br/>';
  13.  
  14.  
  15. ?>
выводит "сергей"... опять хрень какя-то...
14. valenok - 25 Января, 2009 - 10:52:35 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. header('Content-type: text/html; charset=utf-8');
  3.  
  4. $db_link=mysql_connect($cfg["db"]["host"], $cfg["db"]["user"], $cfg["db"]["pass"]);
  5. mysql_query("SET NAMES 'UTF8'");  
  6.  
  7. ?> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <?PHP
  8.  
  9. $mas=mysql_query("SELECT * FROM `questions`");
  10. while( $mass=mysql_fetch_array($mas))
  11.     echo $mass["question"],'<br/>';
  12.  
15. SergeyQW - 25 Января, 2009 - 11:20:27 - перейти к сообщению
сергей......

 

Powered by ExBB FM 1.0 RC1