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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
ВэйДлин
Отправлено: 14 Января, 2012 - 14:01:31
Post Id


Гость


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


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




В поисковике толком ничего не нашел что мне нужно, возможно из-за того что не правильно формулировал запрос. Как сделать чтоб на выходе всегда была кодировка windows-1251? Может у кого есть решение, буду очень благодарен.
 
 Top
Jet4Fire
Отправлено: 14 Января, 2012 - 14:07:47
Post Id



Новичок


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


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




header('Content-Type: text/html; charset=cp-1251');
или
mb_internal_encoding('cp-1251');


-----
Programming - this is an art!
 
 Top
ВэйДлин
Отправлено: 14 Января, 2012 - 14:12:46
Post Id


Гость


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


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




И вот результат: Персональный сайт - Главная страница
 
 Top
PATCH
Отправлено: 14 Января, 2012 - 14:20:23
Post Id



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


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


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




а информация откудо с бд идет?
а)изменить кодировку файла на windwows 1251
б) функция iconv
в)mysql_set_charset("cp1251");
 
 Top
ВэйДлин
Отправлено: 14 Января, 2012 - 14:31:39
Post Id


Гость


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


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




А как определить кодировку? Если кодировка уже UTF-8 то она стирает пол строки. Файл и так в кодировки windows-125, и header тоже. Данные беру из БД, а записывает их туда сторонний сервер через гет запрос, прикол в том что их много и я не знаю в какой кодировки приходит текст, скрипт просто его заносит в БД, а выводить надо по любому в windows-125.
CODE (htmlphp):
скопировать код в буфер обмена
  1. iconv('UTF-8', 'windows-1251', $s);
 
 Top
PATCH
Отправлено: 14 Января, 2012 - 14:35:51
Post Id



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


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


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




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

(Отредактировано автором: 14 Января, 2012 - 14:36:34)

 
 Top
ВэйДлин
Отправлено: 14 Января, 2012 - 14:37:04
Post Id


Гость


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


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




Заносятся крокозябрами и выводятся так-же
 
 Top
PATCH
Отправлено: 14 Января, 2012 - 14:39:31
Post Id



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


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


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




так данные передаются со сторонего сервера через GET на ваш сервер , в ваш файл обработчик, который в свою очередб заносить данные в бд? в любом случии
а) таблица в бд в cp1251 кодировке?
б) сразу после подключение к бд установите кодировку mysql_set_charset("cp1251");
PHP:
скопировать код в буфер обмена
  1. $mysql_connect = mysql_connect($host,$logout,$password);
  2. mysql_select_db($main_db,$mysql_connect);

извеняюсь за пордон в примере)) скопирнул со своего конфига , у меня просто в utf8)) p.s исправил)

(Отредактировано автором: 14 Января, 2012 - 14:43:35)

 
 Top
ВэйДлин
Отправлено: 14 Января, 2012 - 14:54:30
Post Id


Гость


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


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




БД в cp1251, ничего не помогает, надо сделать так что-бы уже при записи кодировка менялась в utf8
 
 Top
PATCH
Отправлено: 14 Января, 2012 - 14:58:44
Post Id



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


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


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




так вам utf8>windows1251
или windows1251>utf8 ????
 
 Top
ВэйДлин
Отправлено: 14 Января, 2012 - 15:00:42
Post Id


Гость


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


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




Мне "Определить_кодировку>windows1251"
 
 Top
PATCH
Отправлено: 14 Января, 2012 - 15:03:20
Post Id



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


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


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




PHP:
скопировать код в буфер обмена
  1. $mysql_connect = mysql_connect('localhost','login','');
  2. mysql_select_db($main_db,$mysql_connect);
  3.  
  4. $str=iconv("UTF-8", "CP1251", $_POST['str']);
  5. $select = mysql_query ("INSERT INTO `comment` (`str`) VALUES ('".$str."')");
 
 Top
ВэйДлин
Отправлено: 14 Января, 2012 - 15:05:32
Post Id


Гость


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


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




спс, тогда вопрос, все будет работать если $_POST['str'] придет в другой кодировке? даже если уже в CP1251?
 
 Top
PATCH
Отправлено: 14 Января, 2012 - 15:10:36
Post Id



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


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


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




нет для этого надо ручками с помощью IF ELSEIF

PHP:
скопировать код в буфер обмена
  1. if(mb_detect_encoding($_POST['str'], 'UTF-8')==true)
  2. {$str=iconv("UTF-8", "CP1251", $_POST['str']);}
  3. elseif(mb_detect_encoding($_POST['str'], 'CP1251')==true)
  4. {}
  5. elseif(и т.д)

(Отредактировано автором: 14 Января, 2012 - 15:12:37)

 
 Top
ВэйДлин
Отправлено: 14 Января, 2012 - 15:22:05
Post Id


Гость


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


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




Благодарю, может кому понадобится моя функция
CODE (htmlphp):
скопировать код в буфер обмена
  1. function decod($str, $end = 'CP1251'){
  2.   $decod = array('UTF-8', 'CP1251', виды кодировок...);
  3.   foreach($decod as $thc){
  4.     if($thc == $end) continue;
  5.     if(mb_detect_encoding($str, $thc) == true){
  6.       $str = iconv($thc, $end, $str);
  7.           break;
  8.     }
  9.   }
  10.   return $str;
  11. }
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB