freePBX 13 русский текст в UCP

FreePBX, TrixBox, AsteriskGUI и др.
Всевозможные надстройки/интерфейсы к Asterisk в виде GUI.
[всё что прямо не относится к Asterisk писать сюда]

Модераторы: Admins, Модераторы

Ответить
olegrz
Сообщения: 33
Зарегистрирован: 19 мар 2013, 22:04

freePBX 13 русский текст в UCP

Сообщение olegrz » 24 фев 2016, 12:00

Установил asterisk 13 + FreePBX 13 из исходников. Проблема нарисовалась - не отображаются в UCP имена на русском. Вместо имени ????????.
В CDR FreePBX все отображается на русском. В mysql в таблице CDR тоже всё на русском. ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci - таблица создана с возможностью работы с русским языком.
Может кто сталкивался?
Последний раз редактировалось olegrz 26 фев 2016, 16:47, всего редактировалось 1 раз.

olegrz
Сообщения: 33
Зарегистрирован: 19 мар 2013, 22:04

Сообщение olegrz » 25 фев 2016, 18:32

Проблему так и не решил.
имена, которые отображаются в UCP вместо русских букв вопросами,
берутся:
phonenebook FreePBX -> поиск по CallerID (внутренний источник) -> внутренняя база данных Asterisk
/var/lib/asterisk/astdb.sqlite3 (И в консоли Asterisk, и в программах для просмотра sqlite3 все имена отображаются на русском.) -> отображение в "Отчёты CDR" - (все имена отображаются на русском) -> сохраняются в таблице cdr (в консоле mysql тоже русский). И только когда из UCP идёт запрс к базе asteriskcdrdb место русских букв появляются вопросы

Вот тут где -то собака и зарылась.
А где не пойму.

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/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

mysql> show create database asteriskcdrdb;
+---------------+------------------------------------------------------------------------------------------------+
| Database | Create Database |
+---------------+------------------------------------------------------------------------------------------------+
| asteriskcdrdb | CREATE DATABASE `asteriskcdrdb` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */ |
+---------------+------------------------------------------------------------------------------------------------+

olegrz
Сообщения: 33
Зарегистрирован: 19 мар 2013, 22:04

Сообщение olegrz » 27 фев 2016, 08:54

РЕШЕНО!!!
/etc/my.cnf
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci

NickCool
Сообщения: 1
Зарегистрирован: 07 май 2017, 14:08

Схожая проблема

Сообщение NickCool » 07 май 2017, 14:10

Доброго времени суток!

Имею ввиду несчастного случая (версия ОС) следующую конфигурацию:
ubuntu 16.04 x32
asterisk certified/13.8-cert2
freepbx 13
MySQL 5.7
PHP 5.6

С учётом проблем с php и ODBC (первый только 7 версии, а второй отсутствует в системе), которые были преодолены осталась последняя: в cdr через ODBC кириллица записывается в latin1, в то время как cdr_mysql (да, @depricated, но поставил) - пишет красиво в utf8.

По ODBC:
ставил с https://dev.mysql.com/downloads/connector/odbc/ - Connector/ODBC 5.3.8 for Ubuntu 16.04 32-bit

[spoiler="/etc/odbc.ini"]
[MySQL-asteriskcdrdb]
Description=MySQL connection to 'asteriskcdrdb' database
driver=MySQL
server=localhost
database=asteriskcdrdb
Port=3306
Socket=/var/run/mysqld/mysqld.sock
option=3
charset=utf8
[/spoiler]

[spoiler="/etc/odbcinst.ini"]
Description = ODBC for MySQL
Driver=/usr/lib/i386-linux-gnu/odbc/libmyodbc5w.so
FileUsage = 1
[/spoiler]

[spoiler="echo 'show variables like "char%";' | isql -v MySQL-asteriskcdrdb"]
| Variable_name | Value |
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/
[/spoiler]

Уже и в /etc/mysql/mysql.conf.d/mysqld.cnf добавлял в секцию [general]
[spoiler]
character_set_server=utf8
collation_server=utf8_unicode_ci
character-set-server=utf8
collation-server=utf8_unicode_ci
init_connect='SET collation_connection = utf8_unicode_ci, character_set_results = utf8_unicode_ci'
init_connect='SET NAMES utf8'
[/spoiler]

А система всё сопротивляется и пишет от cdr_ODBC ""Николай Михайлович" <103>", а cdr_mysql '"Николай Михайлович" <103>'.
И вот у меня не сходится в итоге.

Буду благодарен за пинок в верном направлении.

---------------------------------------------------------------------
UPD:
Помогло:
https://blogs.oracle.com/mysqlconnector ... takes_when

Нужно было в /etc/odbcinst.ini указать не "w" (UNICODE), а "a" (ANSI) для UTF8:
Driver=/usr/lib/i386-linux-gnu/odbc/libmyodbc5a.so

Выкинул всё добавленное из /etc/mysql/mysql.conf.d/mysqld.cnf - результат по прежнему положительный.

Ответить