Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 21, 2017 17:43:17

Bigmax
Зарегистрирован: 2017-06-21
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Разница в кодировках Windows 7 и Windows Server 2008

Добрый день.
Столкнулся со следующей проблемой и не могу понять почему так происходит. Скрипт забирает из БД данные и пересылает их по почте. Если скрипт запускается с машины с Windows 7 то на почту приходит совершенно корректное читаемое письмо, если скрипт запускается с Windows Server 2008 то на почту приходит письмо с кракозябрами - и кракозябры в кодировке CP-1252. В таком случае приходится принудительно делать преобразование - encode('1252').decode('1251') и тогда все корректно.
Помогите понять в чем разница?

Офлайн

#2 Июнь 21, 2017 23:28:57

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Разница в кодировках Windows 7 и Windows Server 2008

Bigmax
Помогите понять в чем разница?
МБ в региональных настройках веды? 1252 латиница, 1251 - кирилица.
Каким образом осуществляеться отправка е-мейла? это стороняя программа или мыло отправляет сам скрипт используя чтото типа smtplib?



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#3 Июнь 22, 2017 09:56:44

Bigmax
Зарегистрирован: 2017-06-21
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Разница в кодировках Windows 7 и Windows Server 2008

Почта отправляется из скрипта через smtplib. Честно говоря, вообще непонятно как винда влияет на данные, которые запросом берутся из БД, сохраняются в переменную и передаются в функцию отправки почты. Я пробовал ради интереса менять chcp у винды на сервере, но это конечно ничего не дало.

Офлайн

#4 Июнь 22, 2017 13:15:56

sander
Зарегистрирован: 2015-02-19
Сообщения: 317
Репутация: +  53  -
Профиль   Отправить e-mail  

Разница в кодировках Windows 7 и Windows Server 2008

Bigmax
в бд какая кодировка?

Офлайн

#5 Июнь 22, 2017 18:43:52

Bigmax
Зарегистрирован: 2017-06-21
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Разница в кодировках Windows 7 и Windows Server 2008

В БД стандартная виндовая 1251.

Офлайн

#6 Июнь 22, 2017 18:53:51

Bigmax
Зарегистрирован: 2017-06-21
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Разница в кодировках Windows 7 и Windows Server 2008

Сверил региональные настройки на обеих машинах - идентично, разница только в том что Windows 7 на русском языке, а Windows Server 2008 на англ. Но язык системы стоит русский и там и там.

Офлайн

#7 Июнь 23, 2017 00:49:55

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Разница в кодировках Windows 7 и Windows Server 2008

там в “язык и региональные стандарты” , вкладка “дополнительно”, секция “язык программ не поддерживающих Юникод” у вас на сервере скорее всего английский, попробуйте поменчять на Русский.

Bigmax
Windows 7 на русском языке, а Windows Server 2008 на англ. Но язык системы стоит русский и там и там.
Это как? язык интерфейса чтоли? тогда как вы определили что 2008 английская? или раскладка клавиатуры?



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Июнь 23, 2017 00:52:31)

Офлайн

#8 Июнь 23, 2017 10:17:43

Bigmax
Зарегистрирован: 2017-06-21
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Разница в кодировках Windows 7 и Windows Server 2008

PEHDOM
Это как? язык интерфейса чтоли? тогда как вы определили что 2008 английская? или раскладка клавиатуры?
Да, язык интерфейса не серваке англ. Не думаю что это должно повлиять

Кажется я нашел решение - я для подключения к БД использую pymssql и, подробнее изучив документацию, обнаружил опцию для метода connect(charset=“cp1251”) - если ее указать то приходит совершенно корректное письмо, как для Windows 7 так и для Windows Server 2008.

Правда, саму причину такого поведения пересылки одних и тех же данных понять пока не получилось.

Офлайн

#9 Июнь 23, 2017 10:19:33

Bigmax
Зарегистрирован: 2017-06-21
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Разница в кодировках Windows 7 и Windows Server 2008

PEHDOM
там в “язык и региональные стандарты” , вкладка “дополнительно”, секция “язык программ не поддерживающих Юникод” у вас на сервере скорее всего английский, попробуйте поменчять на Русский.
Там стоял Russian(Russia)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version