PHP-запрос с подключением OBDC, возвращающий строку с нераспознанными символами - PullRequest
0 голосов
/ 01 ноября 2018

Я использую соединение ODBC для доступа к базе данных SQL Server и получения строки из нее. Проблема в том, что я получаю ? символов в строке, где, например, это должно быть ē.

Это код, который я использую:

if(($result = odbc_exec($connect, $sql)) !== false) {
   while( $obj = odbc_fetch_object( $result )) {
      if ($obj->PLK_STATUSS == '10') {
            echo $obj->DESCRIPTION;
       }
    }
}

Это должно повториться Piemērs, но я получаю Piem?rs.

Я поставил

<meta http-equiv="content-type" content="text/html; charset=utf-8"</meta> 

в голове. Я тоже попробовал

echo utf8_decode($obj->DESCRIPTION);

без удачи.

В чем еще может быть проблема? Я не опытный в php, так что, вероятно, это что-то простое.

EDIT: Если я просто сделаю echo "Piemērs";, то это сработает.

EDIT: Я использую FreeTDS для создания ODBC-соединения. Я думаю, что проблема заключается в конфигурации ODBC. Из других источников я понял, что в файле freetds.conf должна быть строка

client charset = UTF-8

Но когда я добавляю эту строку, веб-страница перестает работать, и я получаю ERR_EMPTY_RESPONSE в браузере.

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Проблема, вероятно, из-за более новой версии PHP. Была такая же проблема, когда ODBC работал в php5, но при обновлении до php7 пришлось изменить его на PDO.

0 голосов
/ 14 ноября 2018

Мне удалось решить проблему перехода с ODBC на PDO.

$conn = new PDO('dblib:charset=UTF-8;host='.Configure::read('SERVERNAME').';dbname='.Configure::read('DB'),
            Configure::read('USERNAME'),
            Configure::read('PASSWORD')
        );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...