Первый сервер печатает специальные символы, второй печатает заменяющий символ - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть два сервера Ubuntu:Сервер 1 - Ubuntu 16.04.5, PHP 7.0.32Сервер 2 - Ubuntu 14.04.5, PHP 7.2.9

Проблема: Сервер 1 печатает специальные символы, а Сервер 2 печатает страшный символ замены черного алмаза.

Выводы:

Оба сервера считывают данные из одной и той же таблицы MSSQL.

В файле php.ini обоих серверов закомментирован набор default_charset.Для проверки я установил для Сервера 2 значение default_charset = "UTF-8" и перезапустил apache, но не повезло.

Сетевой ответ обоих файлов показывает Content-Type: text / html;charset = UTF-8.

Также не используйте httpd.conf (я попытался установить его на сервере 2 для тестирования без удачи).

Оба сервера отображают UTF-8 при работе с языковой картой локали.

При открытии каждого файла в блокноте ++ по умолчанию для параметра Кодировка установлено значение «Кодировать в UTF-8».

Я не уверен, где еще проверить.Я знаю, что об этом уже спрашивали, но каждое решение, которое я нашел, до сих пор не помогало.Это как-то связано с версией PHP или версией Ubuntu?Что еще я могу проверить, что я, возможно, пропустил?Спасибо за помощь.

Редактировать 1 Код - это просто тестовый файл с оператором выбора и повторением результата.Это было просто создано, чтобы найти проблему, чтобы я мог исправить ее в реальном проекте.

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

Вот несколько строковых примеров того, что распечатывается.

Сервер 1: с розничной ориентациейСервер 2: с розничной ориентацией

Сервер 1: Фланаган Билтон, ОООСервер 2: Фланаган � ??Билтон, ООО

Сервер 1: Класс «С» аптекаСервер 2: Класс � ?? C� ??аптека

Редактировать 2 По-прежнему нужна помощь, поэтому вот тестовый код, используемый с каждого сервера Ubuntu на один сервер MSSQL.

$conn = connect();

    $sql  = "select ltrim(rtrim(additionalinformation)) as 'text' from tblsmdecision where petitionid = 4559";
    $stmt = $conn->prepare($sql);
    $stmt->execute();

    $row = $stmt->fetch();

    echo $row['text'];

    function connect()
    {
        $host = 'xxx';
        $db   = 'xxx';
        $user = 'xxx';
        $pass = 'xxx';

        $conn = new PDO("dblib:host=$host; dbname=$db", "$user", "$pass");

        return $conn;
    }
...