рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рдЕрдкрдиреА рдЦреБрдж рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ-рдореБрдЦрдмрд┐рд░
рд╕рдордЬрд╝реНрдЬрд╝рдд рдХреЗ рд▓рд┐рдП
рджреМрдбрд╝рдирд╛ рдФрд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ
"рд░рд╣рд╕реНрдпрдордп рдкреНрд░рддреАрдХреЛрдВ" рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП
, рдореИрдВрдиреЗ рдЦреБрдж рд╕реЗ рдХрд╣рд╛: "рдЕрдм, рдЖрдЦрд┐рд░рдХрд╛рд░, рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд▓реЙрдЧрд┐рдВрдЧ рдмрдирд╛рдЗрдП!"
рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╣рд╛рдмрд░рд╛-рдХреИрдЯ
(рд╕рдм рдХреБрдЫ рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд
рд╕рдм рдХреБрдЫ рдкрд╛рдпрдерди 2.x рд╢рд╛рдЦрд╛ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ) рдХреЗ рддрд╣рдд Win32 рдореЗрдВ Django-vsky рдЬреИрд╕реЗ рд▓реЙрдЧ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдХреИрд╕реЗ рдЪрд┐рддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдкрд╣рд▓рд╛ рдХрд╛рдоред рдХрдВрд╕реЛрд▓ рдХреЛ рд╕рд╣реА рдкрд╛рда рдЖрдЙрдЯрдкреБрдЯ
рд▓рдХреНрд╖рдг
рдЬрдм рддрдХ рд╣рдо рдЖрд░рдВрднрд┐рдХ I / O рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХреЛрдИ "рд╕реБрдзрд╛рд░" рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдпреВрдирд┐рдХреЛрдб рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде
рдкреНрд░рд┐рдВрдЯ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ OS рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдм рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
"рдЪрдорддреНрдХрд╛рд░" рдЖрдЧреЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ - рдЕрдЧрд░ рд╣рдо рдХрд┐рд╕реА рднреА рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ (рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рджреЗрдЦреЗрдВ) рдпрд╛ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ, рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдЖрдкрдХреЛ utf-8 рдореЗрдВ рдХрдЪрд░рд╛ рдорд┐рд▓рддрд╛ рд╣реИред рдЖрдк рдЬреАрдд рдХреЗ рддрд╣рдд рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ - 1251 рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХреНрд░реЙрд▓ рдХрд░рддрд╛ рд╣реИ ...
рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рднреНрд░рдордг
рд╡рд░реНрдгреЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдХрдИ рдкреИрд░рд╛рдореАрдЯрд░ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ:
sys
рдореЙрдбреНрдпреВрд▓ рдХреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ sys.getdefaultencoding()
- рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рдкрд╕рдВрджреАрджрд╛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ
locale.getpreferredencoding()
- рдорд╛рдирдХ рдзрд╛рд░рд╛рдУрдВ рдХрд╛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ
sys.stdout, sys.stderr
- рдлрд╝рд╛рдЗрд▓ рдХреА рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╕реНрд╡рдпрдВ рдХреБрдЫ рднреНрд░рдо рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реЛрдВрдЧреЗ рдХрд┐ рд╕рдм рдХреБрдЫ рдПрдХреАрдХреГрдд рд╣реИ рдФрд░ utf-8 рдХреА рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рд╣реА рд╣реЗрдбрд░ рд╣реИрдВ
- "рдмреЛрдирд╕" рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдлреЗрдВрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдереНрд░реЗрдбреНрд╕ рдХрд╛ рдкреНрдпрд╛рд░ рд╣реИ, рдЕрдЧрд░, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реЗрдЯ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде, рдПрдХ рдпреВрдирд┐рдХреЛрдб рд▓рд╛рдЗрди рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╕рдордп рдХрд┐рд╕реА рднреА рдЪрд░рд┐рддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ
рд╣рдо рдЗрд╕рдХрд╛ рд╣рд▓ рдвреВрдВрдв рд░рд╣реЗ рд╣реИрдВ
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрди рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдЙрдиреНрд╣реЗрдВ рдПрдХрд░реВрдкрддрд╛ рдореЗрдВ рд▓рд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред
рдФрд░ рдпрд╣рд╛рдБ рдордЬрд╝рд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ:
рдЕрд╣рд╛! рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ "рд╕рд┐рд╕реНрдЯрдо" ASCII рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд░рд╣рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдПрдХ "рдкрд╕рдВрджреАрджрд╛" рдЕрдкрд╡рд╛рдж
UnicodeEncodeError/UnicodeDecodeError
рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд▓рд┐рдирдХреНрд╕ рдкрд░ рд╣рд░ рдЬрдЧрд╣ utf-8 рд╣реИ, рддреЛ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдирдХреЛрдбрд┐рдВрдЧ рд╣реИрдВ - рддрдерд╛рдХрдерд┐рдд рдПрдПрдирдПрд╕рдЖрдИ, рдпрд╣ cp1251 рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧреНрд░рд╛рдлрд┐рдХ рднрд╛рдЧ рдФрд░ OEM рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ cp866 рд╣реИ, рдЬреЛ рдкрд╛рда рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдХрдВрд╕реЛрд▓ред DOS рдХреЗ рдмрд╛рдж рд╕реЗ OEM рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдпрд╛ рд╣реИ, рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рд╡рд┐рд╢реЗрд╖ рдЯреАрдореЛрдВ рджреНрд╡рд╛рд░рд╛ рднреА рдкреБрди: рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдХреЛрдИ рднреА рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рддрдХ, рдореИрдВрдиреЗ рдЗрд╕ рдЙрдкрджреНрд░рд╡ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдерд╛:
рдФрд░ рд╡рд╣, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рдХрд╛рдо рдХрд┐рдпрд╛ред рдЬрдм рддрдХ рдореИрдВрдиреЗ
print
рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛, рддрдм рддрдХ рдХрд╛рдо рдХрд┐рдпрд╛ред рдЬрдм рдореИрдВ
logging
рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдХреНрд░реАрди рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдЧрдпрд╛
logging
рд╕рдм рдХреБрдЫ рдЯреВрдЯ рдЧрдпрд╛ред
рд╣рд╛рдБ, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛, рдЪреВрдВрдХрд┐ "рдпрд╣" рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдореИрдВ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЙрд╕реА рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рд╕реЗрдЯ рдХрд░реВрдБрдЧрд╛:
sys.setdefaultencoding(sys.stdout.encoding or sys.stderr.encoding)
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди:
- Win32 рдореЗрдВ, рдкрд╛рда krakozyabry рджреНрд╡рд╛рд░рд╛ рдореБрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ cp1251 рдХреА рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИ
- рдЬрдм рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдлрд┐рд░ рд╕реЗ рд╡рд╣реА рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛
- рд╕рдордп-рд╕рдордп рдкрд░, рдЬрдм рдЖрдк рдкрд╛рда рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЯрд╛рдЗрдк
①
( ①
) рдХрд╛ рдПрдХ рдЪрд░рд┐рддреНрд░ рд╣реЛрддрд╛ рд╣реИ ①
рдЬрд┐рд╕реЗ рдпреВрдирд┐рдХреЛрдб рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреГрдкрдпрд╛ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рдХреБрдЫ рд╣реЗрдбрд┐рдВрдЧ рдореЗрдВ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдлрд┐рд░ рд╕реЗ UnicodeEncodeError
рдкреНрд░рд╛рдкреНрдд UnicodeEncodeError
!
рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдХрд░реАрдм рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдиреЛрдЯрд┐рд╕ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ cp866 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рдХреЗрд╡рд▓ рд╡рд╛рдВрдЫрд┐рдд рд╕реНрдЯреНрд░реАрдо рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдпрд╣ рд╣рдореЗрд╢рд╛ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдХрд╛рд░реНрдп рдХрд╛ рджреВрд╕рд░рд╛ рднрд╛рдЧ utf-8 рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдХрдВрд╕реЛрд▓ рдкрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реИред
рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдХреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
import sys import codecs sys.stdout = codecs.getwriter('cp866')(sys.stdout,'replace')
рдпрд╣ рдХреЛрдб рдЖрдкрдХреЛ рдПрдХ рдкрддреНрдерд░ рд╕реЗ рджреЛ рдкрдХреНрд╖рд┐рдпреЛрдВ рдХреЛ рдорд╛рд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ - рд╡рд╛рдВрдЫрд┐рдд рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ umlauts рдФрд░ рдЕрдиреНрдп рдЯрд╛рдЗрдкреЛрдЧреНрд░рд╛рдлреА рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╕рдордп рдЕрдкрд╡рд╛рджреЛрдВ рд╕реЗ рдЕрдкрдиреА рд╕реБрд░рдХреНрд╖рд╛ рдХрд░реЗрдВ рдЬреЛ рдХрд┐ cp866 рдХреЗ 255 рд╡рд░реНрдгреЛрдВ рдореЗрдВ рдЧрд╛рдпрдм рд╣реИред
рдпрд╣ рдЗрд╕ рдХреЛрдб рдХреЛ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ - рдореИрдВ рдПрдХ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдЧреЛрд▓рд╛рдХрд╛рд░ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ OEM рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рдХреИрд╕реЗ рдЬрд╛рди рд╕рдХрддрд╛ рд╣реВрдВ? рдЕрдЬрдЧрд░ рдореЗрдВ ANSI / OEM рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдЧреБрдЧрд▓реА рдХрд░рдирд╛ рдЙрдЪрд┐рдд рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ WinAPI рдХреЛ рдереЛрдбрд╝рд╛ рдпрд╛рдж рдХрд░рдирд╛ рдкрдбрд╝рд╛
UINT GetOEMCP(void);
... рдФрд░ рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд░рдЦрд╛:
рджреВрд╕рд░рд╛ рдХрд╛рд░реНрдпред рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЛ рд░рдВрдЧреАрди рдХрд░реЗрдВ
рд╡реЗрд░реНрдХреЗрдЧ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдЬрдВрдЧ рдХреЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЕрдкрдиреЗ рд▓рд┐рдП рднреА рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдЪрд╛рд╣рддрд╛ рдерд╛ред
Googling , рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реЗрдЯ рдкрд░, рд▓реЙрдЧрд┐рдВрдЧ.рд╕реНрдЯреНрд░реАрдорд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рдВрд╢рдЬ рд╕реЗ - рд╡рд┐рд╕реНрддрд╛рд░ рдФрд░ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбрд┐рдЧреНрд░реА рдХреА рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╕рдордп рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдорд╛рдирдХ рд╕реНрдЯреНрд░реАрдорд╣реИрдВрдбрд▓рд░ рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред
рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ
рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╕рд░рд▓ рд╕реНрдЯреНрд░реАрдорд╣реИрдВрдбрд▓рд░ рд╡рд╛рд░рд┐рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рдФрд░ рдЕрдм рддрдХ рдХрд╛рдлреА рд╕рдВрддреБрд╖реНрдЯ рд╣реВрдВ:
class ColoredHandler( logging.StreamHandler ): def emit( self, record ):
рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ, рдпрд╣ рд╕рдм рдХрд╛рдо, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред рдФрд░ рдЕрдЧрд░ рдкрд╣рд▓реЗ рдпрд╣ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдХрдВрд╕реЛрд▓ рдореЗрдВ "рдореИрдЬрд┐рдХ" ansi.dll рдХреЛ рд╕рд┐рдореНрдлрдиреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рд╕рд┐рд╕реНрдЯрдо рдлреЛрд▓реНрдбрд░ рдХреЗ рдмреЛрд▓реНрд╕ рдореЗрдВ рдЬреЛрдбрд╝рдХрд░ рдПрдПрдирдПрд╕ рдХреЛрдб рдХреЗ рд▓рд┐рдП "рдПрдиреЗрдмрд▓" рд╕рдкреЛрд░реНрдЯ рджрд┐рдпрд╛ рдЬрд╛рдП, рддреЛ рд╡рд┐рдВрдбреЛрдЬ 7 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ (рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ) рдпрд╣ рдлреАрдЪрд░ рдЖрдЦрд┐рд░рдХрд╛рд░ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ "рдХрдЯ" рд╣реЛ рдЧрдпрд╛ред ред рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ dll рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдирд╛ рднреА рдХрд┐рд╕реА рддрд░рд╣ "рдХреЛрд╖реЗрд░ рдирд╣реАрдВ рд╣реИред"
рд╣рдо рдлрд┐рд░ рд╕реЗ Google рдХреА рдУрд░ рд░реБрдЦ рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╕реЗ, рд╣рдореЗрдВ рдХрдИ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рддреЗ рд╣реИрдВред рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп, рд╕рднреА рд╡рд┐рдХрд▓реНрдк рдХрдВрд╕реЛрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WinAPI рдХреЙрд▓ рдХреЗ рд╕рд╛рде ANSI рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рдХреНрд░рдо рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЙрдмрд╛рд▓рддреЗ рд╣реИрдВред
рд▓рд┐рдВрдХ рдкрд░ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рднрдЯрдХрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдПрдХ
рд░рдВрдЧрдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЖрдпрд╛ред рдХрд┐рд╕реА рддрд░рд╣ рдореИрдВрдиреЗ рдЙрд╕реЗ рдмрд╛рдХреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдкрд╕рдВрдж рдХрд┐рдпрд╛ред рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдлрд╛рдпрджреЛрдВ рдореЗрдВ рдкреВрд░реЗ рдХрдВрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╢рд╛рдорд┐рд▓ рд╣реИ - рдЖрдк рд░рдВрдЧреАрди рдкреНрд░рд┐рдВрдЯ рдХреЛ рд╕рд╛рдзрд╛рд░рдг
print u"\x1b[31;40m- \x1b[0m"
рдкреНрд░рд┐рдВрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
print u"\x1b[31;40m- \x1b[0m"
рдпрджрд┐ рдЖрдк рдЕрдЪрд╛рдирдХ рдореЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ
print u"\x1b[31;40m- \x1b[0m"
ред
рдореБрдЭреЗ рддреБрд░рдВрдд рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг 0.1.18 рдореЗрдВ рдПрдХ рдХрд╖реНрдЯрдкреНрд░рдж
рдмрдЧ рд╣реИ рдЬреЛ рдпреВрдирд┐рдХреЛрдб рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдирд╛рддреЗ рд╕рдордп рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдпрд╛ред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рджреЛрдиреЛрдВ рдЗрдЪреНрдЫрд╛рдУрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдФрд░ рдкрд╛рд░рдВрдкрд░рд┐рдХ "рдмреИрд╕рд╛рдЦреА" рдХреЗ рдмрдЬрд╛рдп рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ:
рдЖрдЧреЗ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
рд╡рд╣ рд╕рдм рд╣реИред рд╕рдВрднрд╛рд╡рд┐рдд рд╕реБрдзрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ, рдпрд╣ win64 рдЕрдЬрдЧрд░ рдХреЗ рддрд╣рдд рд╕рдВрдЪрд╛рд▓рди рдХреНрд╖рдорддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ рдФрд░ рд╕рдВрднрд╡рддрдГ, рдПрдХ рд╣реА StackOverflow рдкрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ, рдЦреБрдж рдХреЛ isatty рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ColoredHandler рдорд┐рд▓рддрд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдореА рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ
dzz.org рдкрд░
рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ