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]   

> Без описания
Вездеход
Отправлено: 12 Декабря, 2009 - 21:24:08
Post Id



Частый посетитель


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


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




народ, помогайте...
знаю что такие тем было море, но в них одно и тоже, мне это не помогло((

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


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


выставляю кодировки на сайте через заголовки
PHP:
скопировать код в буфер обмена
  1. header('Content-type: text/html; charset=utf-8');


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


все файлы соответственно сохранены в формате UTF

в файле .htaccess прописано : AddDefaultCharset utf-8

в браузере(лиса) в инфе о странице тоже все корректно видно, что ей передались заголовки все - utf8

для базы тоже выставил все что нужно:
PHP:
скопировать код в буфер обмена
  1. mysql_query("set character_set_connection='utf8';");
  2. mysql_query("set character_set_client='utf8';");
  3. mysql_query("set character_set_results='utf8';");
  4. mysql_query("set character_set_server='utf8';");


результат:
CODE (text):
скопировать код в буфер обмена
  1. character_set_client=utf8
  2. character_set_connection=utf8
  3. character_set_database=utf8
  4. character_set_filesystem=binary
  5. character_set_results=utf8
  6. character_set_server=utf8
  7. character_set_system=utf8


если не выставлять кодировку для базы - то вот так все:
CODE (text):
скопировать код в буфер обмена
  1. character_set_client=cp1251
  2. character_set_connection=cp1251
  3. character_set_database=utf8
  4. character_set_filesystem=binary
  5. character_set_results=cp1251
  6. character_set_server=cp1251
  7. character_set_system=utf8



так вот, суть проблемы.
вот после всех манипуляций с данными, у меня работают как бы сразу 2 кодировки:
- если через header не прописывать кодировку вообще - то текст из файлов выводится в виде крокозябров, а вот текст из базы корректно
- если кодировку через header прописать - то все корректно, кроме данных из базы.
- если смотреть кодировку в настройках браузера - она юзает UTF8, как и надо. если менять в ручную на 1251 - то все снова меняется - тексты не читаемо, инфа из базы корректно видна

народ, помогите плз, уже даже не знаю куда смотреть(
(Добавление)
помогает вообщем то вот эта весчь:
PHP:
скопировать код в буфер обмена
  1. iconv("windows-1251", "UTF-8", $text);?>


но я не могу так все данные прогонять...
нагрузка будет не хилая ибо(

(Отредактировано автором: 12 Декабря, 2009 - 21:31:14)



-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
valenok
Отправлено: 13 Декабря, 2009 - 08:21:21
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




У тебя небось сами данные в базе записаны в какой нибудь latin1
Кодировку полям ставить нужно utf8_general_ci


-----
Truly yours, Sasha.
 
My status
 Top
Phantik
Отправлено: 13 Декабря, 2009 - 08:37:14
Post Id


Посетитель


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


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




Вместо iconv перед запросом к базе напиши
PHP:
скопировать код в буфер обмена
  1.  
  2. mysql_query("SET NAMES utf8");
  3. $Result = mysql_query("SELECT Ваш запрос");
  4.  

(Отредактировано автором: 13 Декабря, 2009 - 08:54:52)

 
 Top
Вездеход
Отправлено: 13 Декабря, 2009 - 09:17:57
Post Id



Частый посетитель


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


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




valenok
да, сам сервер работает с кодировкой 1251, но таблице и полям и базе выставил нужную кодировку, так что тут проблем нет =)
Phantik пишет:
Вместо iconv перед запросом к базе напиши
PHP:
скопировать код в буфер обмена

1.

2.
mysql_query("SET NAMES utf8");
3.
$Result = mysql_query("SELECT Ваш запрос");
4.

а смысл? я такое уже пробовал - тоже ничего не помогло


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Champion Супермодератор
Отправлено: 13 Декабря, 2009 - 09:28:43
Post Id



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


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


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




Вездеход пишет:
- если через header не прописывать кодировку вообще - то текст из файлов выводится в виде крокозябров, а вот текст из базы корректно
- если кодировку через header прописать - то все корректно, кроме данных из базы.
- если смотреть кодировку в настройках браузера - она юзает UTF8, как и надо. если менять в ручную на 1251 - то все снова меняется - тексты не читаемо, инфа из базы корректно видна
Отсюда вывод, что данные в базу записаны в 1251. Попробуй зайди в PMA, например, убедись, что кодировка соединения, БД и таблиц UTF (ну еще раз, на всякий случай) и добавь запись в таблицу через PMA. Или отредактируй.
А потом посмотри, как эта обновленная строка будет на сайте выглядеть. Я думаю, что ты увидишь обычные буквы.

Просто если ты внесешь в базу данные не в УТФ, а потом пропишешь во всех настройках УТФ, то получится как раз то, что у тебя и получилось.
 
 Top
Вездеход
Отправлено: 13 Декабря, 2009 - 10:47:25
Post Id



Частый посетитель


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


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




Champion
я тоже так думал...
вот щас снова проверил
сам сервер с базами работает с 1251, но там менять я боюсь - так как у меня много данных... боюсь что слетят...
а вот для сайта создал базу. изменил у нее кодировку на utf8_general_ci
затем создал таблицу, сделал ей тоже кодировку utf8_general_ci
затем данные (через PMA) добавил для проверки - смысл не меняется((
все равно почему то база выдает кодировку 1251...

на данный момент идут запросы к базе вот такие:
PHP:
скопировать код в буфер обмена
  1. mysql_query("set character_set_connection='utf8'");
  2. mysql_query("set character_set_client='utf8'");
  3. mysql_query("set character_set_results='utf8'");
  4. mysql_query("set character_set_server='utf8'");
  5. mysql_query ("set collation_connection='utf8_general_ci'");
  6. mysql_query ("set collation_server='utf8_general_ci'");

это не помогает...

(Отредактировано автором: 13 Декабря, 2009 - 10:51:11)



-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
valenok
Отправлено: 13 Декабря, 2009 - 11:58:25
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




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


-----
Truly yours, Sasha.
 
My status
 Top
Вездеход
Отправлено: 13 Декабря, 2009 - 23:18:17
Post Id



Частый посетитель


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


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




ребят, всем спасибо...
все у меня было супер, просто переработал и забыл указать
вот такой запрос - mysql_query("SET NAMES utf8");
в НУЖНОМ месте...
у меня сперва данные получал сайт, а только потом я менял кодировку... )


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB