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

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

Модератор: 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 Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

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

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

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

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

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 Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

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

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

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

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

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 Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

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 КБ) 14004 просмотра
С уважением,
Алексей Юсов

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

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 Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

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 CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

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 Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

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

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

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

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

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

Ответить