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]   

> Без описания
createl
Отправлено: 13 Марта, 2012 - 18:37:12
Post Id



Гость


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


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




Совсем запутался с кодировками. Получаю курлом страницу, она содержит русский текст и в браузере этот текст отображается некорректно. Если сохранить полученное в фаил, а потом вручную пересохранить в ansi, то отображается нормально, если выводить командой php. Но опять же, сплошные квадратики, если его открыть файлом хтмл. Я так понял, крякозябры получаются если текст выводимый в браузере, имеет кодировку отличную, от той, которая содержится в мета тегах этого текста. А что тогда ее меняет? Как это исправить? В какой кодировке содержимое, получаемое функций file_get_contents? ANSI и Windows-1251 это одно и то же? И еще интересно, регулярные функции могут также не понять с чем они имеют дело и за счет этого выдавать не то, что в шаблоне?
 
 Top
Maxi
Отправлено: 13 Марта, 2012 - 18:56:25
Post Id



Гость


Покинул форум
Сообщений всего: 107
Дата рег-ции: Июнь 2010  
Откуда: Kharkov, Ukraine


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




Попробуй отослать заголовок
$headers = "Content-type: text/plain; charset=windows-1251";
 
 Top
Морозов Семен
Отправлено: 14 Марта, 2012 - 21:07:16
Post Id



Гость


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


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




Используйте лучше UTF-8 Она более универсальнее чем windows-1251

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

далее создаёте файл в корневой папке сайта .htaccess , в нем записываете AddDefaultCharset UTF-8

Если вы используете базу данных MySql, то после подключения к ней вам необходимо прописать следующее:

PHP:
скопировать код в буфер обмена
  1. mysql_query("SET character_set_client = utf8");
  2. mysql_query("SET character_set_results = utf8");
  3. mysql_query("SET character_set_connection = utf8");
  4. mysql_query("SET collation_connection = utf8_general_ci");


и в конечном счете в метатеге html записать вот это:

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


Вроде и всё...

P.S. там конечно еще есть некоторые моменты которые я пропустил. Но вот эти по крайней мере исправляют многие недочеты
 
 Top
UNTRUSTED
Отправлено: 14 Марта, 2012 - 21:19:45
Post Id


Частый гость


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


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




С этим utf-8 тоже мучался мучался... И оставил все-таки cp-1251
Никак не получалось header(Location:...) запустить!! Насколько я знаю, это потому что utf-8 всегда в начале файла какие-то там символы выводит!!!
Да и зато с cp-1251 у меня вообще пролем никаких!!!
 
 Top
jovani
Отправлено: 14 Марта, 2012 - 21:28:15
Post Id



Новичок


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


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




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

а при обращении к базе данных необходимо прописать те строки, которые указал Морозов Семен
 
 Top
createl
Отправлено: 15 Марта, 2012 - 19:41:57
Post Id



Гость


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


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




Maxi пишет:
Попробуй отослать заголовок
$headers = "Content-type: text/plain; charset=windows-1251";

провобовал, не помогло

Много чего перерыл, но что происходит понять не могу. Получаю страницу чужого сайта курлом и она выводится с крякозябрами. Записываем ее в файл при помощи fwrite с расширением htm - два клика и о чудо, в браузере все нормально. Читаю тот же файл echo file_get_contents -- снова иероглифы. Смотрю исходный код в обоих страницах - идентичен. Разве что у страницы, которая при помощи скрипта выводится пустая строка есть в начале. Может кто объяснит из за чего это происходит? Что то php своего чтоли добавляет, что браузер с ума сходит?
 
 Top
Maxi
Отправлено: 16 Марта, 2012 - 00:25:07
Post Id



Гость


Покинул форум
Сообщений всего: 107
Дата рег-ции: Июнь 2010  
Откуда: Kharkov, Ukraine


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




createl пишет:
Maxi пишет:
Попробуй отослать заголовок
$headers = "Content-type: text/plain; charset=windows-1251";

провобовал, не помогло

Много чего перерыл, но что происходит понять не могу. Получаю страницу чужого сайта курлом и она выводится с крякозябрами. Записываем ее в файл при помощи fwrite с расширением htm - два клика и о чудо, в браузере все нормально. Читаю тот же файл echo file_get_contents -- снова иероглифы. Смотрю исходный код в обоих страницах - идентичен. Разве что у страницы, которая при помощи скрипта выводится пустая строка есть в начале. Может кто объяснит из за чего это происходит? Что то php своего чтоли добавляет, что браузер с ума сходит?


А сама кодировка в браузере какая указана?
 
 Top
createl
Отправлено: 16 Марта, 2012 - 04:39:57
Post Id



Гость


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


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




Maxi пишет:



А сама кодировка в браузере какая указана?


В настройках браузера по умолчанию windows-1251. В мета тегах получаемой страницы стоит utf-8. Кстати, если получать курлом страницу другого какого-нибудь сайта, который присылает страницу, где в метах прописано windows 1251, даже через скрипт все отображается нормально. А если убрать метатег utf-8 в сохраненной страничке с расширением htm, то тогда тоже иероглифы(то есть ясно прописано какая кодировка должна быть, но браузер упорно отказывается этому внимать в случае работы скрипта - причем любой браузер).
 
 Top
UNTRUSTED
Отправлено: 16 Марта, 2012 - 05:29:59
Post Id


Частый гость


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


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




Морозов Семен пишет:
и в конечном счете в метатеге html записать вот это:
CODE (html):
скопировать код в буфер обмена
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Браузеры уже давно meta теги игнорят!
 
 Top
shabalin
Отправлено: 16 Марта, 2012 - 05:58:42
Post Id



Новичок


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


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




UNTRUSTED пишет:
Браузеры уже давно meta теги игнорят!

Не игнорят. Хотя приоритет у них и ниже, чем HTTP-заголовки.

createl, У вас скорее всего проблема в том, что страница, которую вы получаете с чужого сайта - в кодировке, отличной от вашей. Вам нужно узнать по заголовкам, какая кодировка у той страницы и переконвертировать страницу в вашу кодировку, будть то Windows-1251 или UTF-8.

Например, если у удаленной страницы кодировка UTF-8, а у вас, как я понял, Windows-1251, то код будет таким:

PHP:
скопировать код в буфер обмена
  1. $content = iconv('UTF-8', 'WINDOWS-1251//IGNORE', $content);


* Предполагается, что $content - это то, что вы получили от курла.

(Отредактировано автором: 16 Марта, 2012 - 06:03:32)



-----
Winginx, локальный сервер для разработчиков PHP, Node.js, MongoDB и MySQL
http://winginx.ru/
 
 Top
createl
Отправлено: 23 Марта, 2012 - 20:34:13
Post Id



Гость


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


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




shabalin пишет:
createl, У вас скорее всего проблема в том, что страница, которую вы получаете с чужого сайта - в кодировке, отличной от вашей. Вам нужно узнать по заголовкам, какая кодировка у той страницы и переконвертировать страницу в вашу кодировку, будть то Windows-1251 или UTF-8.

Ура, добрался до PHP наконец. Действительно так и я кажется понял, что к чему в этих кодировках. Спасибо всем, особенно shabalin и Морозову Семену (за вариант с .htaccess)
 
 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