За последние 24 часа нас посетили 60553 программиста и 1744 робота. Сейчас ищут 1117 программистов ...

Проблемы с русской кодировкой

Тема в разделе "PHP для новичков", создана пользователем lamok, 25 янв 2016.

  1. lamok

    lamok Активный пользователь

    С нами с:
    16 июн 2008
    Сообщения:
    64
    Симпатии:
    1
    Здравствуйте.
    Проблема с русской кодировкой, грешу на php.ini.
    Вот некоторые вводные:
    mb_internal_encoding() - ISO-8859-1
    mb_regex_encoding()- EUC-JP
    echo mb_detect_encoding('Всем привет') выдает UTF-8
    если делаю так: echo iconv( 'UTF-8', 'windows-1251', 'Всем привет') - то ничего не выводиться
    а если так то: echo iconv( 'UTF-8', 'windows-1251', 'Hello') - то выводиться Hello
    Почему так?
    Если просто в php написать echo 'Привет всем' то все выводиться нормально при кодировке сайта windows-1251.
    Но если в скрипт php отправить русские символы (name=Ваня) и сделать echo 'Привет '.$_POST['name'], то Привет будет нормально отображаться и "Ваня" -каракулями.

    Уже с ног сбился, в чем может быть проблема? в настройке PHP (php.ini), что нужно изменить?

    Изменил заголовок, убрал оттуда "Php.ini", ибо нефиг там что-то менять. Причина не в нём.
         — модераторъ
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Re: Php.ini (Проблемы с русской кодировкой)

    В http header какая кодировка?
     
  3. lamok

    lamok Активный пользователь

    С нами с:
    16 июн 2008
    Сообщения:
    64
    Симпатии:
    1
    Re: Php.ini (Проблемы с русской кодировкой)

    Если Вы имеете в виду кодировку сайта то windows-1251 если нет уточните где посмотреть!
    Если в php.ini:
    PHP's default character set is set to empty.
    ; http://php.net/default-charset
    ;default_charset = "UTF-8"
     
  4. lamok

    lamok Активный пользователь

    С нами с:
    16 июн 2008
    Сообщения:
    64
    Симпатии:
    1
    Re: Php.ini (Проблемы с русской кодировкой)

    Все данные привел для полноты картины.
    Текстовый редактор использую в кодировке windows-1251, я правильно выбрал кодировку редактора?

    Добавлено спустя 1 минуту 57 секунд:
    При создании домена сам указал кодировку windows-1251, разве не правильно?
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Re: Php.ini (Проблемы с русской кодировкой)

    Давай не выбирать какая правильная. Не кодировка виновата, неправильными могут быть только руки.

    Что за редактор? И как ты судишь о том, какая кодировка у твоей веб-страницы?
     
  6. lamok

    lamok Активный пользователь

    С нами с:
    16 июн 2008
    Сообщения:
    64
    Симпатии:
    1
    Re: Php.ini (Проблемы с русской кодировкой)

    Редактор NetBeans, при создании проекта я выбираю кодировку файлов php windows-1251, правильно?

    На всех страницах сайта указываю <meta http-equiv="Content-Type" content="text/html; charset=Windows-1251" />!
     
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Re: Php.ini (Проблемы с русской кодировкой)

    Да meta-это так, дополнение небольшое. Нажми в хроме f12, загрузи свой сайт и покажи вот такой скрин: http://prntscr.com/9umjcu
     
  8. lamok

    lamok Активный пользователь

    С нами с:
    16 июн 2008
    Сообщения:
    64
    Симпатии:
    1
    Re: Php.ini (Проблемы с русской кодировкой)

    Connection:keep-alive
    Content-Type:text/html; charset=WINDOWS-1251
    Date:Mon, 25 Jan 2016 14:40:25 GMT
     
  9. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Re: Php.ini (Проблемы с русской кодировкой)

    В NetBeans нет возможности посмотреть/изменить кодировку конкретного файла. Ты можешь только задать кодировку по умолчанию для проекта, это какбы "рекомендация" для новых файлов, но ничего никуда не перекодируется. Возможно есть какие-то плагины для управления кодировкой, я не интересовался.

    В PHPStorm "из коробки" есть возможность работать с кодировкой на уровне файла.

    Добавлено спустя 1 минуту 54 секунды:
    Ок, теперь убедись что у тебя одна и та же кодировка на странице с формой и на странице, которая потом выводит 'Привет '.$_POST['name'].
     
  10. lamok

    lamok Активный пользователь

    С нами с:
    16 июн 2008
    Сообщения:
    64
    Симпатии:
    1
    Re: Php.ini (Проблемы с русской кодировкой)

    Именно так -В NetBeans нет возможности посмотреть/изменить кодировку конкретного файла.
    Но при создании проекта который я создал я указал именно кодировку windows-1251.
    Вроде так же можно в свойствах проекта изменить кодировку, после этого русские символы перестают читаться (становятся не читаемы), может он и перекодирует в utf-8...

    Добавлено спустя 2 минуты 5 секунд:
    Уважаемые знатоки, мои ответы нас движут к решению проблемы?
    П.С. ранее (на другом хостинге) был скрипт отдающий сервису данные в кодировке windows-1251, сейчас сервис их не принимает, говорит проблемы с кодировкой.
     
  11. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Re: Php.ini (Проблемы с русской кодировкой)

    Ещё раз: он ничего не перекодирует. Ты просто в свойствах проекта указываешь в какой кодировке тебе показывать. Понимаешь разницу? Если текст с кириллицей сохранялся как 1251, а ты его показываешь как utf-8, он выглядит плохо. И наоборот. Сами данные при этом не меняются.

    Пойми этот, блин, ключевой момент: смена точки зрения не меняет данные. Когда ты одеваешь чужие очки, мир не становится мутным.

    Добавлено спустя 6 минут 17 секунд:
    что с этим?
     
  12. machetero

    machetero Активный пользователь

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    Но ведь даже нотпад++ это умеет ...
    [​IMG]
     
  13. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Пропал топикстартер. На самом интересном месте.
     
  14. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    да и виндовый блокнот это умеет. но ты не сравнивай процессор текста и иде. тем более что по умолчанию все иде используют юникод. и в принципе ничего же не мешает уж на 17-то году 21-го века перенастроить все на юникод. но видишь тут человек хочет сипи1251 и получает от него огромное кол-во геморроя удовольствия. а мог бы использовать юникод.
     
  15. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Проблема даже не в 1251, а в том, что у автора разные кодировки, а он этого не знает. Я даже предполагаю как такое получилось, но не будем забегать вперед.
     
  16. lamok

    lamok Активный пользователь

    С нами с:
    16 июн 2008
    Сообщения:
    64
    Симпатии:
    1
    Выдает:
    Привет потом каракули если передаю в поле русские символы.

    НО если в выводе сделать вывод iconv( 'UTF-8', 'windows-1251', $POST['name'])- все выводиться нормально!
     
  17. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    действительно, с чего бы ему выводится нормально? Хоть бы свою тему читали, в ней уже давно написали, почему такое происходит, а вы не видите.