Кодировка

Тема в разделе "PHP", создана пользователем Panzers^), 2 сен 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Panzers^)

    Panzers^) Постоялец

    Регистр.:
    7 окт 2007
    Сообщения:
    69
    Симпатии:
    0
    Вызываю страницу с удаленного сервака через функцию file_get_contents(); значит вызвали мы страничку, и пришла она ко мне в кодировке KOI8r. Так вот вопрос: как вызвать удаленную страничку в нормальной кодировке, чтобы она в исходной читабельной кодировке приходила?
     
  2. prokopa

    prokopa

    Регистр.:
    27 июн 2007
    Сообщения:
    402
    Симпатии:
    105
    iconv('"koi8-r','windows-1251',file_get_contents(url));
     
    Panzers^) нравится это.
  3. gregzem

    gregzem

    Регистр.:
    21 окт 2007
    Сообщения:
    202
    Симпатии:
    66
    На случай ущербного хостинга, где нет iconv

    PHP:
    convert_cyr_string($str"k""w");
     
    drkwv, bookinist, PHP_Master и ещё 1-му нравится это.
  4. Alexitdv

    Alexitdv

    Регистр.:
    4 янв 2008
    Сообщения:
    161
    Симпатии:
    65
    Только iconv работает медленно и часто встает крива на хостингах. Геморный он чет. Может еще какие варианты подскажет кто? Частая задача перекодить
     
  5. BlackByte

    BlackByte Прохожие

    тут нужно индивиудально подходить к вопросу
    вот тут http://ua2.php.net/manual/ru/function.iconv.php нужно читать в самих комментах
    там люди приводят пример как можно обойстись без iconv, т.е. по сути аналог этой функции предлагают
    я не стал сюда копипастить текст, зайди по ссылке и смотри комменты

    тоже долго мучала данная проблемма, использовал один из предложенных вариантов
     
  6. Panzers^)

    Panzers^) Постоялец

    Регистр.:
    7 окт 2007
    Сообщения:
    69
    Симпатии:
    0
    Кстати, пока тема про кодировку зашла, есть еще один вопросец: Имеем форму, имеем кнопку отправки данных из формы в БД, вся инфа в скрипте из БД нормально отображается, а ту которую из формы отправляешь, то кодировка меняется, как такое исправить? Где что дописать?
    Пробовал это писать:
    PHP:
    mysql_query ("set character_set_client='cp1251'");
    mysql_query ("set character_set_results='cp1251'");
    mysql_query ("set collation_connection='cp1251_general_ci'");
    Не помогает =(
     
  7. prokopa

    prokopa

    Регистр.:
    27 июн 2007
    Сообщения:
    402
    Симпатии:
    105
    у тебя видимо сама страница в кодировке отличной от cp1251 загружается (utf,koi8r..), потому данные с формы передаются скрипту не в windows-1251 и "set character.." тут безполезно.. нужно либо менять кодировку страницы, либо скриптом дополнительно конвертить в windows-1251
     
  8. gregzem

    gregzem

    Регистр.:
    21 окт 2007
    Сообщения:
    202
    Симпатии:
    66
    Проверить кодировку страницы из которой отправляются данные можно разными способами:

    1. в IE в меню view -> Encoding.
    2. телнетом открыть вашу страницу и посмотреть заголовок HTTP ответа веб-сервера.

    telnet ваш-домен 80
    GET / HTTP/1.0

    Скорее всего у вас там не windows-1251. UTF8, например, или Western European ISO.

    Лечится тоже по-разному:
    - можно добавить в .htaccess одну из строк

    AddDefaultCharset Windows-1251

    или

    AddDefaultCharset ru_RU.cp1251

    в зависимости от хостинга.

    - можно поставить в HTML

    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

    - можно через header('Content-type: text/html; charset=win-1251'); отдавать
     
    Mons нравится это.
  9. Panzers^)

    Panzers^) Постоялец

    Регистр.:
    7 окт 2007
    Сообщения:
    69
    Симпатии:
    0
    windows-1251 стоит, БД тоже в windows-1251, добавлять в хтаксес тоже пробовал - тоже самое..
     
  10. wellmax

    wellmax Постоялец

    Регистр.:
    9 июл 2008
    Сообщения:
    112
    Симпатии:
    33
    SET NAMES cp1251
     
Статус темы:
Закрыта.