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 :: Кодировка UTF-8. Кругом квадраты.

 PHP.SU

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


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

> Описание: Они преследуют меня всюду!
Andruxa
Отправлено: 20 Марта, 2011 - 16:39:47
Post Id



Частый гость


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


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




Выделено в отдельную тему из темы "Нужна помощь с регулярнымы выражениями!"
Еще такая проблемка.
Пишу и сохраняю все файлы в кодировке utf.
Когда вытаскиваю инфу из url
PHP:
скопировать код в буфер обмена
  1. function get_content($url=''){
  2.         if($url == ''){
  3.                 return false;
  4.         }
  5.         return file_get_contents($url);
  6. }

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

Эфект такой же Недовольство, огорчение
Подскажите как решить проблему ?
 
 Top
ALEN
Отправлено: 20 Марта, 2011 - 16:44:43
Post Id



Участник


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


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




http://forum.php.su/topic.php?fo...35&topic=739
Используй класс он на выходе выдает utf-8 - остальное написано там.
 
 Top
Champion Супермодератор
Отправлено: 20 Марта, 2011 - 16:44:56
Post Id



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


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


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




Раз в виде квадратов, значит данные не в utf.
file_get_contents($url) - то,что отсюда получается, нужно проверить с помощью mb_detect_encoding() и если надо, конвертнуть в утф с пом. iconv
 
 Top
Andruxa
Отправлено: 20 Марта, 2011 - 19:09:20
Post Id



Частый гость


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


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




ALEN - спасибо, но там че то очень много всего написано Улыбка я наверное пока не смогу этим классом воспользоваться.
Champion были мысли в таком направлении(что если не в utf, то как то их нужно привести к общему виду), вот что получилось.
Подправил функцию:
PHP:
скопировать код в буфер обмена
  1. function get_content($url){
  2.     $urls=file_get_contents($url);
  3.     echo mb_detect_encoding($urls);
  4.     return $urls;
  5. }


выводит UTF-8, но если я вывожу содержимое на страничке
PHP:
скопировать код в буфер обмена
  1. $get_url=get_content($url);
  2. echo $get_url;

Выводит хрень Недовольство, огорчение, вот часть данных
Цитата:
ooncity,dsc:������ ������� �����,img:misc/zn9_1.gif|title:Sandcity,dsc:������ ������� �����,im


И еще вопрос по перекодировке:
PHP:
скопировать код в буфер обмена
  1.  iconv("старая кодировка", "новая кодировка", "что перекодируем");

Я правильно понял ? А если не знаешь кодировку "старую" ее можно не указывать в параметрах?
 
 Top
EuGen Администратор
Отправлено: 20 Марта, 2011 - 19:15:07
Post Id


Профессионал


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


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




При помощи скрипта можно попробовать ее определить:
http://php.su/functions/?mb_detect_encoding
А можно и самому:
http://2cyr[dot]com/decode/?lang=ru


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Champion Супермодератор
Отправлено: 20 Марта, 2011 - 19:15:50
Post Id



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


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


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




Andruxa пишет:
Я правильно понял ?
да
Andruxa пишет:
А если не знаешь кодировку "старую" ее можно не указывать
нельзя.
А укажи в mb_detect_encoding вторым параметром список "windows-1251, utf-8".
В принципе можно таким способом еще
$src = file_get_contents(..);
$dst = iconv('windows-1251', 'utf-8', $src);
if (!$dst) {
$dst=src;
}
но это глупый способ. Не знаю, зачем я его написал)
 
 Top
ALEN
Отправлено: 20 Марта, 2011 - 19:22:55
Post Id



Участник


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


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




Andruxa
Не сможешь через include подключить файл с текстом класса, а потом скопировать пару строк из примера?
 
 Top
Andruxa
Отправлено: 20 Марта, 2011 - 19:54:19
Post Id



Частый гость


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


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




ALEN пишет:
Не сможешь через include подключить файл с текстом класса, а потом скопировать пару строк из примера?

Могу конечно Улыбка Но при детальном рассмотрении увидел, что там курл используется, а у меня на локальном нету курла Недовольство, огорчение
(Добавление)
ААААААА получилось!!!
Сам тормознул, в параметре старой кодировки не то писал.
PHP:
скопировать код в буфер обмена
  1. function get_content($url){
  2.     $urls=file_get_contents($url);
  3.     //echo mb_detect_encoding($urls);
  4.     $encode=iconv("cp1251", "UTF-8", $urls);    
  5.     return $encode;
  6. }

Всем спасибо за отзывчивость ;)
 
 Top
Champion Супермодератор
Отправлено: 20 Марта, 2011 - 20:08:54
Post Id



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


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


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




Andruxa, если $urls будет не в utf8, то iconv поведет себя плохо и вернет false вместо ожидаемой строки.
 
 Top
Andruxa
Отправлено: 20 Марта, 2011 - 20:10:56
Post Id



Частый гость


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


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




А как тогда от этого подстраховаться ?
 
 Top
Champion Супермодератор
Отправлено: 20 Марта, 2011 - 20:22:44
Post Id



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


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


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




я выше написал уже
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB