За последние 24 часа нас посетили 196652 программиста и 2020 роботов. Сейчас ищут 1904 программиста ...

Кодировка

Тема в разделе "PHP для новичков", создана пользователем mazahaler, 23 дек 2017.

  1. mazahaler

    mazahaler Новичок

    С нами с:
    2 ноя 2017
    Сообщения:
    66
    Симпатии:
    2
    Здравствуйте, получаю данные от SOAP сервиса.
    Английские буквы отображаются нормально. Русские - знаками вопроса(????????? ????? ????)
    Пытался исправить так:
    PHP:
    1. $Description=mb_convert_encoding($item->description, "UTF-8");
    но это не работает.
    Есть подозрение что символы возращаются не в UTF-8. Потому как другие данные на русском, полученные не от SOAP отлично отображаются.
    Как это можно исправить?
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.823
    Симпатии:
    1.333
    Адрес:
    Лень
    кодировка скрипта ? заголовков?
     
    mazahaler нравится это.
  3. mazahaler

    mazahaler Новичок

    С нами с:
    2 ноя 2017
    Сообщения:
    66
    Симпатии:
    2
    @MouseZver
    <meta charset="utf-8">
    header('Content-Type: text/html; charset=utf-8');
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.823
    Симпатии:
    1.333
    Адрес:
    Лень
    скрипта ?
    --- Добавлено ---
    and
    .htaccess
    PHP:
    1. AddDefaultCharset UTF-8
     
    mazahaler нравится это.
  5. mazahaler

    mazahaler Новичок

    С нами с:
    2 ноя 2017
    Сообщения:
    66
    Симпатии:
    2
    @MouseZver, вы про это? mb_internal_encoding("UTF-8");
    Если да, то все равно знаки вопросов остались.
    --- Добавлено ---
    у меня apache tomcat
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.823
    Симпатии:
    1.333
    Адрес:
    Лень
    нет, спросил про кодировку скрипта.пхп

    а у меня Ауди q7
    --- Добавлено ---
    в лучшем случае пришлите ссылку на скачивание скрипта, если не понимаете о чем речь
     
    mazahaler нравится это.
  7. mazahaler

    mazahaler Новичок

    С нами с:
    2 ноя 2017
    Сообщения:
    66
    Симпатии:
    2
    @MouseZver, кодировка скрипта UTF-8 без BOM.
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.823
    Симпатии:
    1.333
    Адрес:
    Лень
    а файл .htaccess в корневом каталоге присутствует ?
     
    mazahaler нравится это.
  9. mazahaler

    mazahaler Новичок

    С нами с:
    2 ноя 2017
    Сообщения:
    66
    Симпатии:
    2
    @MouseZver, нет у меня нет этого файла. Я читал что он не работает в Apache Tomcat, но могу ошибаться
     
  10. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.823
    Симпатии:
    1.333
    Адрес:
    Лень
    еще одна полезная функция, если ничего не поможет https://php.net/manual/ru/function.iconv.php
    --- Добавлено ---
    попробуй создай в корневом каталоге сайта, и внутри
    --- Добавлено ---
    а вот еще нашел для вашей проблемы
    http://yan.zlobin.name/86
     
    mazahaler нравится это.
  11. mazahaler

    mazahaler Новичок

    С нами с:
    2 ноя 2017
    Сообщения:
    66
    Симпатии:
    2
    @MouseZver, спасибо, буду пробовать
     
  12. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.823
    Симпатии:
    1.333
    Адрес:
    Лень
    отпишитесь, если получилось, знание в копилку пойдут на будущее
     
    mazahaler нравится это.
  13. mazahaler

    mazahaler Новичок

    С нами с:
    2 ноя 2017
    Сообщения:
    66
    Симпатии:
    2
    Попробовал. .htaccess не работает. iconv тоже не дал результатов. Статья тоже не помогла. В любом случае, спасибо.
     
  14. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    Сохраните полученные текстовые данные "как есть" в файл.
    И попробуйте определить кодировку любым из способов (ну или сюда файл выложите).
    Если уж в документации ничего по этому поводу не написано...
     
    mazahaler нравится это.
  15. mazahaler

    mazahaler Новичок

    С нами с:
    2 ноя 2017
    Сообщения:
    66
    Симпатии:
    2
    @Sail, прикрепил файл с ответом от SOAP метода. Ответ приходит в виде "OTCHET/?????/12345", а должно быть "OTCHET/ОТЧЕТ/12345"
     

    Вложения:

    • test.txt
      Размер файла:
      18 байт
      Просмотров:
      5
  16. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.823
    Симпатии:
    1.333
    Адрес:
    Лень
    Суть проблемы такова, что внутренняя кодировка Tomcat умолчанию - ISO-8859-1. То есть, текст, переданный из формы (неважно методом post или get) будет автоматически неявно перекодирован в ISO-8859-1 и окажется нечитаемым.

    PHP:
    1. echo iconv ( 'UTF-8', 'ISO-8859-1', $a );
     
    mazahaler нравится это.
  17. mazahaler

    mazahaler Новичок

    С нами с:
    2 ноя 2017
    Сообщения:
    66
    Симпатии:
    2
    @MouseZver, спасибо за совет, я пробовал это вчера после прочтения статьи, ссылку на которую вы оставляли выше, но это не помагает.
    Приведу пример:
    1.
    PHP:
    1. echo $repName=$item->name;
    Результат: OTCHET/?????/12345
    2.
    PHP:
    1. echo iconv ( 'UTF-8', 'ISO-8859-1', $repName=$item->name );
    Результат такой же.
     
  18. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    @mazahaler, осталось уточнить насчет опции 'encoding' при создании объекта soap-клиента.
     
    MouseZver нравится это.
  19. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.823
    Симпатии:
    1.333
    Адрес:
    Лень
    там апачик какой то страноватый, конфиги латать нужно