Добрый день!
Необходимо реализовать поиск с выводом результатов с помощью хранимой процедуры. На сервере установлена БД mssql, которая мне не подвластна. Подключение и использование процедуры реализовано с помощью ODBC, сам весь код написан на PHP.
Вычитала, что для реализации в CentOS 7 необходимо установить FreeTDS & UnixODBC и настроить их. Настроить - настроила, однако при выводе результатов поиска русские буквы выводятся в виде знаков вопроса ??????????? , также запрос не понимает ввод русских символов и не выдает результат по ним.
Я прочитала много информации в интернете. В настройках апача указала AddDefaultCherset UTF8, настроила локаль как ru_RU.UTF8.
В файле freetds:
- [freetds]
- host = *********
- port = *******
- tds version = 7.0
- user = UID
- password = PWD
- client charset = UTF8
Команда tsql выводит корректные данные с нормальными символами, и также корректно понимает запрос русскими символами
Информация о freetds
- Version: freetds v0.95.81
- freetds.conf directory: /etc
- MS db-lib source compatibility: yes
- Sybase binary compatibility: yes
- Thread safety: yes
- iconv library: yes
- TDS version: 4.2
- iODBC: no
- unixodbc: yes
- SSPI «trusted» logins: no
- Kerberos: yes
- OpenSSL: no
- GnuTLS: yes
И при подключении tsql
- locale is «ru_RU.UTF8»
- locale charset is «UTF-8»
- using default charset «UTF8»
В файле odbcinst прописала необходимые драйвера и в файле odbc к ним корректно подключилась. Команда isql также выводит корректные данные с нормальными символами, и также корректно понимает запрос русскими символами. То есть команды работают и понимают и выводят русские символы.
Однако, на сайте выводятся знаки вопроса. Я пробовала iconv, переделка различных кодировок (с utf-16 на utf-8 выводятся китайские символы, а с некоторыми кодировками текст вообще пропадает). В header также передавала информацию.
Очень долго уже сижу с проблемой кодировки, где моя ошибка и что необходимо исправить для вывода корректных русских символов?