odbc к mysql вместо русских слов знаки вопроса
Добавлено: 12 июл 2014, 23:41
Ситуация в следующем, в диалплан хочу вывести данные на русском языке из базы mysql через odbc.
Asterisk 1.8.12.2 на debian 6, mysql 5.5.35-0+wheezy1 кодировка UTF-8 Unicode (utf8). База данных из которой тяну данные сравнение с utf8_general_ci, в таблице аналогичная кодировка. В debian установлена так же utf8.
С настройками проблем нет:
/etc/odbc.ini:
/etc/asterisk/res_odbc.conf:
Сама функция в /etc/asterisk/func_odbc.conf:
При использовании функции в диалплане:
Вместо русского слова появляются знаки вопроса. Английский текс выдает корректно.
Решил, что это проблема идет в связки сервера, астериска. Попробовал решить.
Самое интересное, что на этом сервере, был сайт на русском языке, как я загрузил его на сервер вместо русского так же были знаки вопроса. Решил эту проблемы подавлением следующих строк в код php подсоединения к базе mysql:
Естественно и в этот раз копать в эту сторону.
В результате поиска в гугле добавил в файл /etc/mysql/my.cnf следующие строки:
После этого, сайт на русском стал отображаться без знаков вопроса (базы сайта и ту которую я пытаюсь использовать в одинаковых кодировках выше описанных) да же с законченными строками по настройки кодировке.
Сейчас на сервере по кодировкам, после редактирования настроек mysql имею следующую картину:
Но текст из БД по odbc по прежнему идет знаками вопроса.
Что делать ума не приложу, все уже перепробовал. Прошу Вашей помощи.
Asterisk 1.8.12.2 на debian 6, mysql 5.5.35-0+wheezy1 кодировка UTF-8 Unicode (utf8). База данных из которой тяну данные сравнение с utf8_general_ci, в таблице аналогичная кодировка. В debian установлена так же utf8.
С настройками проблем нет:
/etc/odbc.ini:
Код: Выделить всё
[asterisk-connector]
Driver = MySQL
Description = Connector/ODBC 3.51 Driver DSN
Server = localhost
Port = 3306
User = asterisk
Password = ********
Database = asterisk
Socket = /var/run/mysqld/mysqld.sock
Код: Выделить всё
[asterisk]
enabled = yes
dsn = asterisk-connector
username = asterisk
password = *******
pooling = no
limit = 1
pre-connect = yes
Код: Выделить всё
[NAME]
dsn=asterisk
readsql=select name from destinations where prefix in (substr('${CALLERID(num)}',2,7),substr('${CALLERID(num)}',2,6),substr('${CALLERID(num)}',2,5),substr('${CALLERID(num)}',2,4),substr('${CALLERID(num)}',2,3)) order by length(prefix) DESC limit 1
Код: Выделить всё
exten => 84959898533,1,Set(CALLERID(name)=${ODBC_CODE()})
Решил, что это проблема идет в связки сервера, астериска. Попробовал решить.
Самое интересное, что на этом сервере, был сайт на русском языке, как я загрузил его на сервер вместо русского так же были знаки вопроса. Решил эту проблемы подавлением следующих строк в код php подсоединения к базе mysql:
Код: Выделить всё
mysqli_query($db_ad, "SET NAMES 'utf8' COLLATE 'utf8_general_ci'");
mysqli_query($db_ad, "SET CHARACTER SET 'utf8'");
В результате поиска в гугле добавил в файл /etc/mysql/my.cnf следующие строки:
Код: Выделить всё
[mysqld]
init-connect="SET NAMES utf8"
character-set-server=utf8
collation-server=utf8_general_ci
Сейчас на сервере по кодировкам, после редактирования настроек mysql имею следующую картину:
Код: Выделить всё
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
Что делать ума не приложу, все уже перепробовал. Прошу Вашей помощи.