Кодировка в заявках, полученных по почте

Запросы на решение проблем

Модератор: ykolesnikov

Ответить
lefmihalch
OTRS Новобранец
Сообщения: 18
Зарегистрирован: 20 апр 2017, 16:57

Кодировка в заявках, полученных по почте

Сообщение lefmihalch » 28 апр 2017, 13:21

Коллеги, что можно сделать, чтобы кириллица отображалась корректно в AgentTicketZoom?
Некоторые пользователи как-то умудряются писать почту так, что в результате в форме просмотра заявки мы видим вот что-то такое:
Изображение.

При этом:
1. бывают пользователи, у которых это всегда, а бывают - у которых время от времени
2. если нажать кнопку "Печать" в заявке, то в печатной форме все отображается нормально - по-русски

Как можно добиться того, чтобы в AgentTicketZoom текст отображался так же корректно, как и в печатной форме?

ЗЫ база данных в utf8, все везде в utf8.
ЗЗЫ AgentTicketZoom - это то, куда попадаешь, открывая одну заявку: http://host/otrs/index.pl?Action=AgentT ... cketID=666

lefmihalch
OTRS Новобранец
Сообщения: 18
Зарегистрирован: 20 апр 2017, 16:57

Re: Кодировка в заявках, полученных по почте

Сообщение lefmihalch » 28 апр 2017, 13:31

И что еще характерно (только что заметил), в представлении index.pl?Action=AgentTicketQueue, когда масштаб включаешь большой и в список вываливает текст заявки, то с кодировкой в "больных" письмах все в порядке:

1. Больное письмо в представлении AgentTicketZoom:
Изображение

2. Оно же, но в представлении AgentTicketQueue с большим масштабом:
Изображение

во втором случае существенно понятнее написано.


Что и где настроить, чтобы и в первом было всё всем понятно?

alexus
OTRS Гуру
Сообщения: 4736
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 27 раз
Поблагодарили: 30 раз

Re: Кодировка в заявках, полученных по почте

Сообщение alexus » 28 апр 2017, 19:55

Подпись сделайте нормальную, чтобы было видно, что за система и на каком ПО поднята.
С уважением,
Алексей Юсов

Prod: OTRS ITSM 5.0.14 on CentOS 7 x64 Linux with MySQL 5.7

Radiant System OTRS Intergrator RU
Radiant System OTRS Intergrator EN
Хотите внедрить OTRS? Спросите меня как!
Следите за нашими новостями на Facebook

Crovax
OTRS Новобранец
Сообщения: 5
Зарегистрирован: 16 ноя 2016, 09:52

Re: Кодировка в заявках, полученных по почте

Сообщение Crovax » 27 ноя 2017, 15:48

Добрый день.
Аналогичная проблема после обновления OTRS с 5.5 на 6
Заявки создаются на основе входящих электронных писем.
До обновления проблем не было. После обновления заявки от некоторых пользователей в AgentTicketZoom отображаются с ������ ����!
(предположительно пользователи используют какие-то темы оформления в письмах).
Возможно ли это исправить?

Изображение
OTRS 6.0.1 на Centos 7.4 x64

alexus
OTRS Гуру
Сообщения: 4736
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 27 раз
Поблагодарили: 30 раз

Re: Кодировка в заявках, полученных по почте

Сообщение alexus » 28 ноя 2017, 00:30

Проверьте кодировку таблиц в MySQL.
С уважением,
Алексей Юсов

Prod: OTRS ITSM 5.0.14 on CentOS 7 x64 Linux with MySQL 5.7

Radiant System OTRS Intergrator RU
Radiant System OTRS Intergrator EN
Хотите внедрить OTRS? Спросите меня как!
Следите за нашими новостями на Facebook

Crovax
OTRS Новобранец
Сообщения: 5
Зарегистрирован: 16 ноя 2016, 09:52

Re: Кодировка в заявках, полученных по почте

Сообщение Crovax » 28 ноя 2017, 15:44

alexus писал(а):Проверьте кодировку таблиц в MySQL.
Бегло пробежался по БД, вроде везде стоит UTF8.
К сожалению с SQL вообще и с MySQL в частности, я - на "вы". Т.ч. не знаю как можно эту информацию пакетно выдернуть.
Также возникло предположение из разряда спекуляций: может ли такое быть, если на сервере не хватает каких-либо шрифтов?
OTRS 6.0.1 на Centos 7.4 x64

bowworld
OTRS Новобранец
Сообщения: 40
Зарегистрирован: 17 июл 2013, 07:31
Откуда: Almaty

Re: Кодировка в заявках, полученных по почте

Сообщение bowworld » 28 ноя 2017, 19:26

Crovax писал(а):Добрый день.
Изображение
Подтверждаю,
такие же символы получаю от некоторых клиентов. От других - приходит нормально. Проверил кодировку таблиц - UTF8. Грешу на баг новой "шестерки" :roll:
Сабыр
OTRS 6.0.3
ITSM 6.0.3
ubuntu server xenial

yucheburkov
OTRS Новобранец
Сообщения: 5
Зарегистрирован: 28 ноя 2017, 22:39

Re: Кодировка в заявках, полученных по почте

Сообщение yucheburkov » 28 ноя 2017, 22:46

Добрый день,
Аналогичная проблема на 6-ке.
Письма приходят с такой кракозяброй. Если письмо переслать на другой адрес, то в пересылаемом письме все ОК! Т.е. в отправленном экземпляре в качестве "статьи" видно нормальный текст.
Вся база и поля имеют collation utf8_general_ci проверялось также на utf8mb4_general_ci - ситуация не менялась.
Письмо, судя по трассировке приходит в кодировке utf8
OTRS 5, 6 on Ubuntu Server 16

alexus
OTRS Гуру
Сообщения: 4736
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 27 раз
Поблагодарили: 30 раз

Re: Кодировка в заявках, полученных по почте

Сообщение alexus » 28 ноя 2017, 23:40

Вот нормальная кодировка в письме. Но это не обновлённая система, а поставленная чистая, с нуля. Так что в самой 6ке очевидно проблем нет. Возможно, что при обновлении что-то не так сработало.
Параметры системы:
Версия OTRS (6.0.1)
centos 7.3.1611
MariaDB 5.5.52 InnoDB
Apache 2.4.6 (CentOS)
Perl (5.16.3 (linux))
Вложения
7d157511ba.png
Кодировка русских букв в OTRS 6
7d157511ba.png (156.28 КБ) 2954 просмотра
С уважением,
Алексей Юсов

Prod: OTRS ITSM 5.0.14 on CentOS 7 x64 Linux with MySQL 5.7

Radiant System OTRS Intergrator RU
Radiant System OTRS Intergrator EN
Хотите внедрить OTRS? Спросите меня как!
Следите за нашими новостями на Facebook

Crovax
OTRS Новобранец
Сообщения: 5
Зарегистрирован: 16 ноя 2016, 09:52

Re: Кодировка в заявках, полученных по почте

Сообщение Crovax » 29 ноя 2017, 07:02

alexus писал(а):Вот нормальная кодировка в письме. Но это не обновлённая система, а поставленная чистая, с нуля. Так что в самой 6ке очевидно проблем нет. Возможно, что при обновлении что-то не так сработало.
Письма с испорченной кодировкой составляют процентов 5, не больше. Все остальные - нормальные.
Видимо надо писать разработчикам.
OTRS 6.0.1 на Centos 7.4 x64

Crovax
OTRS Новобранец
Сообщения: 5
Зарегистрирован: 16 ноя 2016, 09:52

Re: Кодировка в заявках, полученных по почте

Сообщение Crovax » 29 ноя 2017, 08:42

На запрос

Код: Выделить всё

show variables like '%char%';
Мне выдало

Код: Выделить всё

character_set_client	utf8
character_set_connection	utf8
character_set_database	utf8
character_set_filesystem	binary
character_set_results	
character_set_server	latin1   <<<------- ??? Проблема или это нормально?
character_set_system	utf8
character_sets_dir	/usr/share/mysql/charsets/
А на

Код: Выделить всё

show variables like '%coll%';

collation_connection	utf8_general_ci
collation_database	utf8_general_ci
collation_server	latin1_swedish_ci
OTRS 6.0.1 на Centos 7.4 x64

bowworld
OTRS Новобранец
Сообщения: 40
Зарегистрирован: 17 июл 2013, 07:31
Откуда: Almaty

Re: Кодировка в заявках, полученных по почте

Сообщение bowworld » 29 ноя 2017, 12:23

у меня так:

+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+

+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_unicode_ci |
| collation_server | utf8_unicode_ci |
+----------------------+-----------------+
Сабыр
OTRS 6.0.3
ITSM 6.0.3
ubuntu server xenial

alexus
OTRS Гуру
Сообщения: 4736
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 27 раз
Поблагодарили: 30 раз

Re: Кодировка в заявках, полученных по почте

Сообщение alexus » 29 ноя 2017, 13:34

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 latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/


collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server latin1_swedish_ci
С уважением,
Алексей Юсов

Prod: OTRS ITSM 5.0.14 on CentOS 7 x64 Linux with MySQL 5.7

Radiant System OTRS Intergrator RU
Radiant System OTRS Intergrator EN
Хотите внедрить OTRS? Спросите меня как!
Следите за нашими новостями на Facebook

yucheburkov
OTRS Новобранец
Сообщения: 5
Зарегистрирован: 28 ноя 2017, 22:39

Re: Кодировка в заявках, полученных по почте

Сообщение yucheburkov » 29 ноя 2017, 17:21

alexus писал(а):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 latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/


collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server latin1_swedish_ci
Все идентично. Но проблема остается. Причем похоже на проблему вывода именно первого письма.
Все остальные "телодвижения", как переслать себе или кому-то на адрес и получить ответ от него отображаются без проблем.
Т.е. "Статьи" с этими записями отправленные на почту и полученные с почты корректно отображают не только вновь написанное, но и то, что было написано ранее и в первом письме отображалось непонятно как...
OTRS 5, 6 on Ubuntu Server 16

yucheburkov
OTRS Новобранец
Сообщения: 5
Зарегистрирован: 28 ноя 2017, 22:39

Re: Кодировка в заявках, полученных по почте

Сообщение yucheburkov » 29 ноя 2017, 17:36

Crovax писал(а):
alexus писал(а):Вот нормальная кодировка в письме. Но это не обновлённая система, а поставленная чистая, с нуля. Так что в самой 6ке очевидно проблем нет. Возможно, что при обновлении что-то не так сработало.
Письма с испорченной кодировкой составляют процентов 5, не больше. Все остальные - нормальные.
Видимо надо писать разработчикам.
5% от чего? от всех входящих на почту? если да, то это неправда, так как любая входящая заявка через почту отображается некорректно.
Если от всех статьей/заметок, то зависит у кого их сколько по каждой заявке.
OTRS 5, 6 on Ubuntu Server 16

yucheburkov
OTRS Новобранец
Сообщения: 5
Зарегистрирован: 28 ноя 2017, 22:39

Re: Кодировка в заявках, полученных по почте

Сообщение yucheburkov » 29 ноя 2017, 17:55

Замечен еще один момент.
Сообщение - ответ на заявку, отправленное с телефона - также отображается некорректно.

Похоже на то, что при выборке и рендеринге страницы где-то подхватывается неверная настройка с кодировкой...
OTRS 5, 6 on Ubuntu Server 16

bowworld
OTRS Новобранец
Сообщения: 40
Зарегистрирован: 17 июл 2013, 07:31
Откуда: Almaty

Re: Кодировка в заявках, полученных по почте

Сообщение bowworld » 29 ноя 2017, 19:13

yucheburkov писал(а): 5% от чего? от всех входящих на почту? если да, то это неправда, так как любая входящая заявка через почту отображается некорректно.
а вот и правда, наблюдаю подобную ситуацию у себя. Сообщения только некоторых клиентов (не более 10%) приходят с некорректной кодировкой.
Сабыр
OTRS 6.0.3
ITSM 6.0.3
ubuntu server xenial

alexus
OTRS Гуру
Сообщения: 4736
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 27 раз
Поблагодарили: 30 раз

Re: Кодировка в заявках, полученных по почте

Сообщение alexus » 29 ноя 2017, 19:22

Наш опыт говорит, что раньше 3-4-го багфикс релиза (т.е. версии 6.0.4) обновляться не стоит ;)
С уважением,
Алексей Юсов

Prod: OTRS ITSM 5.0.14 on CentOS 7 x64 Linux with MySQL 5.7

Radiant System OTRS Intergrator RU
Radiant System OTRS Intergrator EN
Хотите внедрить OTRS? Спросите меня как!
Следите за нашими новостями на Facebook

yucheburkov
OTRS Новобранец
Сообщения: 5
Зарегистрирован: 28 ноя 2017, 22:39

Re: Кодировка в заявках, полученных по почте

Сообщение yucheburkov » 30 ноя 2017, 11:42

Вскрытие показало, что письма отправленные в кодировке UTF-8 читаются без вопросов.
А вот письма отправленные в кодировке KOI-R Кириллица - поступают с выше обозначенными проблемами. Причем проблема отображения не только для новых писем, но и ранее присланных (до обновления)
OTRS 5, 6 on Ubuntu Server 16

mellavelor
OTRS Новобранец
Сообщения: 1
Зарегистрирован: 07 дек 2017, 17:03

Re: Кодировка в заявках, полученных по почте

Сообщение mellavelor » 07 дек 2017, 17:11

Обновились с 5.0.19 до 6.0.1
Проблемы с кракозябрами только с кодировкой KOI-R (в частности отправляемые Outlook)
В БД стоит
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+
Неким магическим образом помогло выставить Kernel::System::Ticket::Article::Backend::MIMEBase:::ArticleStorageDB
Но это было вчера.
Сегодня все поломалось и тут,внезапно,при установке Kernel::System::Ticket::Article::Backend::MIMEBase:::ArticleStorageFS кодировка KOI-R перестала отображаться как кракозябры.

Agrael
OTRS Новобранец
Сообщения: 8
Зарегистрирован: 22 июл 2018, 11:52
Благодарил (а): 3 раза
Поблагодарили: 2 раза

Re: Кодировка в заявках, полученных по почте

Сообщение Agrael » 02 авг 2018, 20:05

Прошу прощения за некрофилию, сам мигрирую с 5 на 6. Столкнулся с той же проблемой - разобрался. Статьи шестерка пишет в Base64 (столбец article_data_mime_attachment.content), а пятерка держит их первозданном виде (столбец article_attachment.content). Возможно это не всегда так и зависит от каких то настроек (не нашел, но и не сильно искал). Решение простое - закодировать статьи пятерки в Base64.
Еще раз прошу прощения, за отсутствие конкретики в виде sql скриптов. Не делюсь, потому что извращенец – хочу ms sql server на линуксе. Для него могу поделиться скриптами - пишите в личку. :D

Шучу (не не насчет ms sql). И сильно не пинать, я не dba.

Код: Выделить всё

-- В линуксе на сколько я понял (могу глубоко заблуждаться) нельзя linkedserver. Поэтому базу готовлю на винде.
EXEC master.dbo.sp_addlinkedserver @server = N'otrs_current', @srvproduct=N'MySQL', @provider=N'MSDASQL', @provstr=N'Driver={MySQL ODBC 8.0 ANSI Driver};DATABASE={имя вашей отрс базы};OPTION=134217728;PWD{пароль к ней же}=;UID={имя пользователя};SERVER={имя/ip сервера}'

EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'collation compatible', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'data access', @optvalue=N'true'
GO

EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'dist', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'pub', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'rpc', @optvalue=N'true'
GO

EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'rpc out', @optvalue=N'true'
GO

EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'sub', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'connect timeout', @optvalue=N'0'
GO

EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'collation name', @optvalue=null
GO

EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'lazy schema validation', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'query timeout', @optvalue=N'0'
GO

EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'use remote collation', @optvalue=N'true'
GO

EXEC master.dbo.sp_serveroption @server=N'otrs_current', @optname=N'remote proc transaction promotion', @optvalue=N'true'
GO

Код: Выделить всё

CREATE FUNCTION [dbo].[get_otrs_content](@otrs_content VARBINARY(MAX))
RETURNS VARBINARY(MAX) AS
BEGIN
	Declare @content VARCHAR(MAX) 
	Declare @result VARCHAR(MAX) 

	SET	@content = CAST(@otrs_content as VARCHAR(MAX))
 
	IF (SELECT CAST(N'' as xml).value('xs:base64Binary(sql:variable("@content"))', 'VARCHAR(MAX)')) IS NULL BEGIN
		SET @result = CAST(N'' as xml).value('xs:base64Binary(sql:variable("@otrs_content"))', 'VARCHAR(MAX)')
	END
	ELSE BEGIN
		SET @result =  @otrs_content 
	END

	RETURN CAST(@result  as VARBINARY(MAX));
END;

Код: Выделить всё

CREATE PROCEDURE [dbo].[sp_merge_article_data_mime_attachment] 
AS
BEGIN
	SET IDENTITY_INSERT article_data_mime_attachment ON;
	MERGE article_data_mime_attachment AS target  
	USING (
		SELECT 
			 id
			,article_id
			,filename
			,content_size
			,content_type
			,content_id
			,content_alternative
			,disposition
			,dbo.get_otrs_content(content) AS content
			,dbo.get_otrs_time(create_time) AS create_time
			,create_by
			,dbo.get_otrs_time(change_time) AS change_time
			,change_by
		FROM openquery(otrs_current,'SELECT * FROM article_attachment') AS article
	) AS source  
	ON (target.id = source.id)  
	WHEN MATCHED AND (
		   target.article_id          <> source.article_id
		OR target.filename            <> source.filename
		OR target.content_size        <> source.content_size
		OR CAST(target.content_type AS VARCHAR(MAX))        <> CAST(source.content_type AS VARCHAR(MAX)) 
		OR target.content_id          <> source.content_id
		OR target.content_alternative <> source.content_alternative
		OR target.disposition         <> source.disposition
		OR target.content             <> source.content
		OR target.create_time         <> source.create_time
		OR target.create_by           <> source.create_by
		OR target.change_time         <> source.change_time
		OR target.change_by           <> source.change_by
	)
	THEN   
		UPDATE SET 
			 article_id          = source.article_id
			,filename            = source.filename
			,content_size        = source.content_size
			,content_type        = source.content_type
			,content_id          = source.content_id
			,content_alternative = source.content_alternative
			,disposition         = source.disposition
			,content             = source.content
			,create_time         = source.create_time
			,create_by           = source.create_by
			,change_time         = source.change_time
			,change_by           = source.change_by
	WHEN NOT MATCHED BY TARGET THEN  
		INSERT (
			 id
			,article_id
			,filename
			,content_size
			,content_type
			,content_id
			,content_alternative
			,disposition
			,content
			,create_time
			,create_by
			,change_time
			,change_by
		) VALUES (
			 source.id
			,source.article_id
			,source.filename
			,source.content_size
			,source.content_type
			,source.content_id
			,source.content_alternative
			,source.disposition
			,source.content
			,source.create_time
			,source.create_by
			,source.change_time
			,source.change_by
		)  
	OUTPUT $action,Inserted.*,Deleted.*;
	SET IDENTITY_INSERT article_data_mime_attachment OFF;
END;

Код: Выделить всё

-- Тадам!
EXECUTE [sp_merge_article_data_mime_attachment];
Вопросы, пожелания, предложения?
С уважением,
Дмитрий

Prod: OTRS 5.0.12 Free on CentOS 7 x64 Linux with MariaDB 10.0

Ответить