рдкрд░реНрд▓ рдореЗрдВ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ

рд╣рдмрд▓ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░реНрд▓ рдореЗрдВ UTF-8 рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рд▓реЗрдЦ рд╣реИ - habrahabr.ru/post/53578 ред рдореИрдВ рдЕрднреА рднреА рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╣реВрдВ
рдореИрдВ рдПрдирдХреЛрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрд░рд╢реНрди рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреА рд╡рд┐рд╡рд┐рдзрддрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдкреНрд░рдпреБрдХреНрдд рд╢рдмреНрджрд╛рд╡рд▓реА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдордореЗрдВ рд╕реЗ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЛ рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИ рдЬреЛ рдПрдирдХреЛрдбрд┐рдВрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдПрдХ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд╛рда рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд╕рд╡рд╛рд▓ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реВрдБрдЧрд╛ред

рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХреЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдгред рд╕реНрд░реЛрдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг, рдПрдХ рдХрд╛рд░реНрдп рдЬреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд▓реЗрдВред Html рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ HTTP рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рд╣реЗрдбрд░ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╣реЗрдбрд░ рд╕рд╣реА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдХреЗрд▓реЗ рдЗрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред

Perl рдореЗрдВ, рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП Encode :: Guess рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрдзрд┐рдХ "рдЙрдиреНрдирдд" рдФрджреНрдпреЛрдЧрд┐рдХ рд╡рд┐рдХрд▓реНрдк Encode :: Detect :: Detector рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдореЛрдЬрд╝рд┐рд▓реЛрд╡реНрд╕реНрдХреА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдирд┐рд░реНрдзрд╛рд░рдХ рдХреЛ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ vnsUniversalDetector.cpp рдлрд╝рд╛рдЗрд▓ рдФрд░ рд╡рд┐рдзрд┐ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ

nsresult nsUniversalDetector::HandleData(const char* aBuf, PRUint32 aLen)

рдЗрд╕ рдкрджреНрдзрддрд┐ рд╕реЗ, рд╕рднреА рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдкрд░ рдХрд╛рдо рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдХреЛрдИ рдмреАрдУрдПрдо рд╣реЗрдбрд░ рд╣реИ, рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдЖрдЧреЗ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЗрдЯрд╛ рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рд░рд▓ рддреБрд▓рдирд╛ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


рдЕрдЧрд▓рд╛, рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдЗрдЯ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдЪрд░рд┐рддреНрд░ рдХреЛ рдЧреИрд░-рдпреВрдПрд╕-рдПрдПрд╕рд╕реАрдЖрдИрдЖрдИ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ (рдХреЛрдб 128 рд╕реЗ 255); рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ:


рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╕рдореВрд╣реЛрдВ (рдПрдордмреА - рдорд▓реНрдЯреА-рдмрд╛рдЗрдЯ, рдПрд╕рдмреА - рд╕рд┐рдВрдЧрд▓-рдмрд╛рдЗрдЯ) рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред

рдпрджрд┐ рдпрд╣ рдпреВрдПрд╕-рдПрдПрд╕рд╕реАрдЖрдИрдЖрдИ рд╣реИ, рддреЛ 2 рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рдпрд╛ рддреЛ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдПрдПрд╕рд╕реАрдЖрдИрдЖрдИ (рд╢реБрджреНрдз рдПрдПрд╕рд╕реАрдЖрдИ) рд╣реИ рдпрд╛ рдПрдХ рдлрд╛рдЗрд▓ рдЬрд┐рд╕рдореЗрдВ рдПрд╕реНрдХреЗрдк рд╕реАрдХреНрд╡реЗрдВрд╕ рд╣реИрдВ рдФрд░ рдЗрдирдХреЛрдбрд┐рдВрдЧ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЖрдИрдПрд╕рдУ -2022-рдХреЗрдЖрд░, рдЖрджрд┐ред (рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП - en.wikipedia.org/wiki/ISO/IEC_2022 ) рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, nsEscCharSetProber рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдбрд┐рдЯреЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

nsMBCSGroupProber рдРрд╕реЗ рдПрдирдХреЛрдбрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ: "UTF8", "SJIS", "EUCJP", "GB18030", "EUCKR", "Big5", "EUCTW"ред

nsSBCSGroupProber - рдЬреИрд╕реЗ рдХрд┐ Win1251, koi8r, ibm866 рдФрд░ рдЕрдиреНрдпред

рдПрдХрд▓-рдмрд╛рдЗрдЯ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд╛рда рдореЗрдВ 2 рд╡рд░реНрдг рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреА рдШрдЯрдирд╛ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред

рдпрд╣ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпреЗ рд╕рднреА рддрд░реАрдХреЗ рдкреНрд░рдХреГрддрд┐ рдореЗрдВ рд╕рдВрднрд╛рд╡реНрдп рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╢рдмреНрдж рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдХреЛрдИ рднреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╡рд┐рднрд┐рдиреНрди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдореЗрдВ, рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕реА рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред

рдпреВрдирд┐рдХреЛрдб рдФрд░ рдкрд░реНрд▓ред рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рджреГрд╢реНрдпред Www.unicode.org/glossary рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпреВрдирд┐рдХреЛрдб рдХреА 7 рд╕рдВрднрд╛рд╡рд┐рдд рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдпреЛрдЬрдирд╛рдПрдБ рд╣реИрдВ: UTF-8, UTF-16, UTF-16BE, UTF-16LE, UTF-32, UTF-32BE, UTF-32LEред рдпреВрдирд┐рдХреЛрдб рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рднрд╛рд╖рд╛ рджреА рдЧрдИ рд╣реИ: "... рд╡рд░реНрдгреЛрдВ рдХреЗ рдбрд┐рдЬрд┐рдЯрд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ рдЬреЛ рджреБрдирд┐рдпрд╛ рдХреА рд╕рднреА рднрд╛рд╖рд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд┐рдд рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ..."ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпреВрдЯреАрдПрдл -7 рднреА рд╣реИ, рдЬреЛ рдорд╛рдирдХ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░реНрд▓ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИ - рдПрдирдХреЛрдб: рдпреВрдирд┐рдХреЛрдб :: рдпреВрдЯреАрдПрдл 7 (рдЖрд░рдПрдлрд╕реА 2152 рднреА рджреЗрдЦреЗрдВ)ред

UTF-7 рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реИ рдПрдирдХреЛрдб: рдпреВрдирд┐рдХреЛрдб :: рдпреВрдЯреАрдПрдл 7 рдХрд╣рддрд╛ рд╣реИ - "... рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк рдореЗрд▓ рдФрд░ рд╡реЗрдм рдкреЗрдЬреЛрдВ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдпреВрдЯреАрдПрдл -7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рддрдХ рди рдХрд░реЗрдВ рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рди рдХрд░ рд▓реЗрдВ рдХрд┐ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдФрд░ рдкрд╛рдардХ (рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рдЕрд░реНрде рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдпрд╣ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ ... "ред

рдкрд░реНрд▓ рдбреЗрд╡рд▓рдкрд░реНрд╕, рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдпреВрдирд┐рдХреЛрдб рдПрдирдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╡реНрдпрд╛рдкрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдкреНрд░рдЧрддрд┐ рдХреЗ рдмрд╛рдж, рдкрд░реНрд▓ рдореЗрдВ рдпреВрдирд┐рдХреЛрдб рд╕рдорд░реНрдерди рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдирдХреЛрдб рдореЙрдбреНрдпреВрд▓ рдЕрдиреНрдп рдПрдирдХреЛрдбрд┐рдВрдЧ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рджреЛрдиреЛрдВ рдПрдХрд▓-рдмрд╛рдЗрдЯ рдФрд░ рдорд▓реНрдЯреА-рдмрд╛рдЗрдЯ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рд╕реВрдЪреА рдПрдирдХреЛрдб :: рдХреЙрдиреНрдлрд┐рдЧрд░ рдкреИрдХреЗрдЬ рдореЗрдВ рджреЗрдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, MIME рдПрдирдХреЛрдбрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: MIME-Header, MIME-B, MIME-Q, MIME-Header-ISO_2022_JPред

рдпрд╣ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡реЗрдм рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ UTF-8 рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рд╣реИред UTF-16 рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд╛рд╡рд╛ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, UTF-8 рдФрд░ UTF-32 рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рд┐рдирдХреНрд╕ рдФрд░ рдЕрдиреНрдп рдпреВрдирд┐рдХреНрд╕ рдЬреИрд╕реА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рдВрд╕реНрдХрд░рдг рдкрд░реНрд▓ 5.6.0 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдпреВрдирд┐рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╢реБрд░реВ рдореЗрдВ рд▓рд╛рдЧреВ рдХреА рдЧрдИ рдереАред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпреВрдирд┐рдХреЛрдб рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдкрд░реНрд▓ 5.8.0 рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЧрдИ рдереАред рдкрд░реНрд▓ 5.14.0 рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпреВрдирд┐рдХреЛрдб рдХрд╛ рд╕рдорд░реНрдерди рдЖрд╕рд╛рдиреА рд╕реЗ (рд▓рдЧрднрдЧ) рдХрдИ рдиреБрдХрд╕рд╛рдиреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдПрдХреАрдХреГрдд рд╣реИ (рдЕрдкрд╡рд╛рджреЛрдВ рдореЗрдВ рдХреБрдЫ рдорддрднреЗрдж рд╣реИрдВ)ред рд╕рдВрд╕реНрдХрд░рдг 5.14 рднреА рдпреВрдирд┐рдХреЛрдб рдорд╛рдирдХ рд╕реЗ рдХрдИ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рд╡рд┐рдЪрд▓рди рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИред

рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2012 рдФрд░ рдПрдирдХреЛрдбрд┐рдВрдЧреНрд╕ (рдкрд░реНрд▓ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП)ред рдЬрдм рд╣рдо рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ C # рдореЗрдВ рдХреБрдЫ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ рддреЛ рд╣рдо рдЙрд╕ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╕рдм рд╕рдВрдЧреНрд░рд╣реАрдд рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддрд╛ рд╣реИред Vistual Studio рдореЗрдВ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдирд╛рддреЗ рд╕рдордп, рд╡рд╣ рдЗрд╕реЗ UTF8 рдореЗрдВ рдмрдирд╛рдПрдЧрд╛ рдФрд░ UTF8 рдХреЛ BOM рд╣реЗрдбрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдЧрд╛ - рдмрд╛рдЗрдЯреНрд╕ 0xEF, 0xBB, 0xBF рдХрд╛ рдПрдХ рдХреНрд░рдоред рдЬрдм рд╣рдо рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ (рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдЦреЛрд▓рддреЗ рд╣реИрдВ) рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, UTF8 рд╕реЗ CP1251 рддрдХ, рд╣рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИ
рдХреБрдЫ рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдпреВрдирд┐рдХреЛрдб рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЪрд░рд┐рддреНрд░ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ... рдпреВрдирд┐рдХреЛрдб (UTF-8) рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рдеред рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рдореВрд▓ рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдпрджрд┐ рдЖрдк cp1251 рдореЗрдВ рдПрдХ рдореМрдЬреВрджрд╛ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рддреЗ рд╣реИрдВ - ToUpper (), рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдФрд░ рдпрджрд┐ рдЖрдк рдлрд╝рд╛рдЗрд▓ рдХреЛ KOI8-R рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ Visual Studio рдореЗрдВ рдЦреЛрд▓рддреЗ рд╣реИрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдИ рднреА рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╕рд╡рд╛рд▓ рдирд╣реАрдВ рд╣реИ, рдпрд╣рд╛рдБ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ, KOI8-R рдХреНрдпрд╛ рд╣реИ, рдФрд░ рд╡рд╣ рдХреИрд╕реЗ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреА рд╣реИ?

"рдкрд░реНрд▓ рдореЗрдВ рдпреВрдирд┐рдХреЛрдб рдмрдЧред" рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреА рддрд░рд╣, рдкрд░реНрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕рд╛рде рднреА рдХреБрдЫ рдРрд╕рд╛ рд╣реА рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░реНрд▓ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЬрдм рдкрд░реНрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧ рд░реВрд╕реА рднрд╛рд╖рд╛ рдХреЗ рд╡рд┐рдВрдбреЛрдЬ рдПрдХреНрд╕рдкреА рдкрд░ рдЕрдкрдирд╛ рдкрд╕рдВрджреАрджрд╛ рд╕рдВрдкрд╛рджрдХ рдЦреЛрд▓рддреЗ рд╣реИрдВ рдФрд░ рдПрдПрдирдПрд╕рдЖрдИ (рдпрд╛рдиреА cp1251) рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рд▓рд┐рдЦрддреЗ рд╣реИрдВ

 use strict; use warnings; my $a = ""; my $b = ""; my $c = тАЬwordтАЭ; print "Words are equal" if uc($a) eq uc($b); 

рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдпрд╣ рд╣реИ рдХрд┐ рдЪрд░ рдореЗрдВ рд▓рд╛рдЗрдиреЗрдВ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВ, рдкрд╣рд▓реЗ рддреЛ рдпрд╣ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЗрд╕реА рддрд░рд╣ рдХреА рдЪреАрдЬреЗрдВ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╣реЛрддреА рд╣реИрдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рдВрд╕ (рд▓реЗрдХрд┐рди uc ($ c) рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧреА)ред

рдпрд╣ рдкрд░реНрд▓ рдореЗрдВ рддрдерд╛рдХрдерд┐рдд "рдпреВрдирд┐рдХреЛрдб рдмрдЧ" рд╣реИ (рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рджреЗрдЦреЗрдВ), рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдХрд▓-рдмрд╛рдЗрдЯ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, 128 рд╕реЗ 255 рддрдХ рдХреЗ рдХреЛрдб рд╡рд╛рд▓реЗ рд╡рд░реНрдгреЛрдВ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрд░реНрде рд╣реЛрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, cp1251 рдореЗрдВ рдкрддреНрд░ рд╕рдВрдЦреНрдпрд╛ - рдХреЛрдб 0xCF рд╣реИ, рдЬрдмрдХрд┐ CP866 - 0x8F, рдФрд░ KOI8-R - 0xF0 рдореЗрдВред рдХреИрд╕реЗ, рддреЛ, uc (), ucfirst (), lc (), lcfirst () рдпрд╛ \ L, \ U рдЬреИрд╕реЗ рд░реЗрдЧреНрдпреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдВрд╕ рдореЗрдВ рдРрд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╡рд░реНрдХрдЖрдЙрдЯ рдХрд░рдирд╛ рд╣реИ?

рдпрд╣ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ "рдмрддрд╛рдиреЗ" рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ cp1251 рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдЪрд░ $ a рдФрд░ $ b, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЖрдВрддрд░рд┐рдХ рдкрд░реНрд▓ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗред

 use strict; use warnings; use encoding 'cp1251'; my $a = ""; my $b = ""; print "equal" if uc($a) eq uc($b); 


рдкрд░реНрд▓ рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рд░реВрдкред рдкрд░реНрд▓ рдХреЗ рдмрд╣реБрдд рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рддрд╛рд░ рддрдерд╛рдХрдерд┐рдд рдЖрдВрддрд░рд┐рдХ рдкреНрд░рд╛рд░реВрдк (рдкрд░реНрд▓ рдХреЗ рдЖрдВрддрд░рд┐рдХ рд░реВрдк) рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЬрд╣рд╛рдВ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЙрдкрдпреЛрдЧ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ 'cp1251) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП; рдЪрд░ $ a, $ b, $ c рдмрд╕ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ (рд╢рдмреНрдж рдСрдХреНрдЯреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░реНрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдПрдХ рдЕрдиреБрдХреНрд░рдо рдУрдХрдЯреЗрдЯ)ред

рдЖрдВрддрд░рд┐рдХ рдкреНрд░рд╛рд░реВрдк рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ рдЕрд▓рдЧ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ UTF-8 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ UTF8 рдзреНрд╡рдЬ рдХреЛ рдЪрд░ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдирд┐рдореНрди рдореЗрдВ рдереЛрдбрд╝рд╛ рдмрджрд▓реЗрдВ

 use strict; use warnings; use encoding 'cp1251'; use Devel::Peek; my $a = ""; my $b = ""; print Dump ($a); 


рдЬрд┐рд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ

рдПрд╕рд╡реА = рдкреАрд╡реА (0x199ee4) 0x19bfb4 рдкрд░
REFCNT = 1
FLAGS = (PADMY, POK, pPOK, UTF8)
PV = 0x19316c "\ 321 \ _ \ _ \ _ \ _ \ _ 320 \ _ \ x {43e} "]
рдХреБрд░ = резреж
LEN = 12

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдлреНрд▓реИрдЧ = (PADMY, POK, pPOK, UTF8)ред рдпрджрд┐ рд╣рдо рдПрдиреНрдХреЛрдбрд┐рдВрдЧ 'cp1251' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ;
рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ

рдПрд╕рд╡реА = рдкреАрд╡реА (0x2d9ee4) 0x2dbfc4 рдкрд░
REFCNT = 1
FLAGS = (PADMY, POK, pPOK)
PV = 0x2d316c "\ 321 \ 201 \ 320 \ 273 \ 320 \ 276 \ 320 \ 262 \ 320 \ 276" \ 0
рдХреБрд░ = резреж
LEN = 12

рдЬрдм рд╣рдо рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб cp1251 рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реЗ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдкрд░реНрд▓ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛрдб рдХреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╕реЗ рдЖрдВрддрд░рд┐рдХ рд╕реНрд╡рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, cp1251 рд╕реЗ рдЖрдВрддрд░рд┐рдХ рдкреНрд░рд╛рд░реВрдк UTF-8 рдХреЗ рд▓рд┐рдП) рдФрд░ рдпрд╣ рдХрд░рддрд╛ рд╣реИ ред

рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рддрдм рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдЬрдм рдмрд╛рд╣рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдлрд╛рдЗрд▓реЗрдВ рдпрд╛ рд╡реЗрдмред рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ cp866 рдПрдиреНрдХреЛрдбреЗрдб рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╢рдмреНрдж "рд╡реНрд╣реЗрди" (рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рд╢рдмреНрдж рдЬрдм рдПрдХ рдкреВрдВрдЬреА рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ) рд╣реЛрддрд╛ рд╣реИред рд╣рдореЗрдВ "рдЬрдм" рд╢рдмреНрдж рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЦреЛрд▓рдиреЗ рдФрд░ рд╕рднреА рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕рд╣реА рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП (utf8 рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде)ред

 use strict; use warnings; use encoding 'utf8'; open (my $tmp, "<:encoding(cp866)", $ARGV[0]) or die "Error open file - $!"; while (<$tmp>) { if (//i) { print "OK\n"; } } close ($tmp); 


рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рд╣рдо "<: рдПрдиреНрдХреЛрдбрд┐рдВрдЧ (cp866)" рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ 'cp866' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛рдо рдХрд░реЗрдЧреА, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдмрд╛рдЗрдЯ рд╕реЗрдЯ рдФрд░ / i рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреАред "<: рдПрдиреНрдХреЛрдбрд┐рдВрдЧ (cp866)" рдирд┐рд░реНрдорд╛рдг рдкрд░реНрд▓ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбреЗрдЯрд╛ CP866 рдореЗрдВ рдЗрдирдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ CP866 рд╕реЗ рдЖрдВрддрд░рд┐рдХ рдкреНрд░рд╛рд░реВрдк (CP866 -> UTF8 + UTF8 рдзреНрд╡рдЬ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИ) рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдПрдиреНрдХреЛрдб рдХрд░рддрд╛ рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг, рд╣рдореЗрдВ LWP :: UserAgent рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреЗрдЬ рдорд┐рд▓рддрд╛ рд╣реИред рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рдХрд╛ рд╕рд╣реА рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

 use strict; use warnings; use LWP::UserAgent; use HTML::Entities; use Data::Dumper; use Encode; use Devel::Peek; my $ua = LWP::UserAgent->new(); my $res = $ua->get("http://wp.local"); my $content; if (!$res->is_error) { $content = $res->content; } else { exit(1); } #     UTF8,   cp1251 - $content = decode('cp1251',$content); # decode   utf8  ( )    Perl $content = decode('utf8',$content); #   $content     ,      ,  , , HTML::Entities,    ,    .. decode_entities($content); 


$ рд╕рд╛рдордЧреНрд░реА = рдбрд┐рдХреЛрдб ('utf8', $ рд╕рд╛рдордЧреНрд░реА) рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЛ рдиреЛрдЯ рдХрд░реЗрдВред

LWP :: UserAgent рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЙрд╕рдХреА рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкреЗрдЬ рдХреЛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдПрдХрд▓-рдмрд╛рдЗрдЯ cp1251 рдореЗрдВ рдпрд╛ UTF8 рдореЗрдВ рд╣реИ, рд╣рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рд╛рд╣рд┐рддреНрдп рдореЗрдВ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдФрд░ рдкрд░реНрд▓ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЗрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдХреЛрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЦреЛрдЬ рдЗрдВрдЬрди рд░реЛрдмреЛрдЯ (рдпрд╛ рдЕрдиреНрдп рдХреЛрдб) рдХреЛ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЗрдбрд░ рдпрд╛ HTML рдореЗрдЯрд╛ рдЯреИрдЧ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдкреГрд╖реНрда рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рди рдХреЗрд╡рд▓ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдкреГрд╖реНрда рднрд╛рд╖рд╛ рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдордд рд╕реЛрдЪреЛ рдХрд┐ рдХреЗрд╡рд▓ рдкрд░реНрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдПрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдмрд╛рд╣рд░реА рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдПрдирдХреЛрдб рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдП рдереЗред рдпрд╣рд╛рдБ рдЗрд╕рдХрд╛ рдореБрдЦреНрдп API рд╣реИ, рдХрд┐рд╕реА рднреА рдкрд░реНрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдХрд╛рдо рдореЗрдВ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ:

 $string = decode(ENCODING, OCTETS[, CHECK]).     ()   ENCODING    Perl; $octets = encode(ENCODING, STRING[, CHECK]).      Perl      ENCODING. [$length =] from_to($octets, FROM_ENC, TO_ENC [, CHECK]).        . 


рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЬрд┐рд╕рдореЗрдВ рд╣рдордиреЗ CP866 рдореЗрдВ рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реА рд╣реИ, рд╣рдо <: рдПрдиреНрдХреЛрдбрд┐рдВрдЧ (cp866) рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░, рдкреНрд░рддреНрдпреЗрдХ рд░реАрдб рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд╛рде, рд╣рдореЗрдВ CP866 рдореЗрдВ рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдорд┐рд▓реЗрдЧрд╛ред рд╣рдо рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдВрддрд░рд┐рдХ рд╕реНрд╡рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

 $str = decode('cp866',$str) 


рдЪрд░ $ str рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВред

рдХреЛрдИ рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк utf8 рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, cp866 рд╕реЗ utf8 рддрдХ рдЯреНрд░рд╛рдВрд╕рдХреЛрдб рдФрд░ рд╕рдм рдХреБрдЫ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬреИрд╕рд╛ рдЗрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ (рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рд╢рдмреНрдж рдЬрдм рдПрдХ рдмрдбрд╝реЗ рдЕрдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рд╣реЛ)ред

 use strict; use warnings; use encoding 'utf8'; use Encode; #open (my $tmp, "<:encoding(cp866)", $ARGV[0]) or die "Error open file - $!"; open (my $tmp, "<", $ARGV[0]) or die "Error open file - $!"; while (<$tmp>) { my $str = $_; Encode::from_to($str,'cp866','utf8'); if ($str=~//i) { print "OK\n"; } } close ($tmp); 


рдПрдирдХреЛрдб рдХреЛ рдЕрдВрдЬрд╛рдо рджреЗрдиреЗ рдХреЗ рдмрд╛рдж $ str :: from_to ($ str, 'cp866', 'utf8') utf8 рдореЗрдВ рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдЗрдЯреНрд╕ (рдСрдХреНрдЯреЗрдЯреНрд╕) рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рд▓рд┐рдП / рдореИрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдХреЛ рдХреЙрд▓ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

 $str = decode('utf8',$str) 


рдмреЗрд╢рдХ, рдПрдХ рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдк рджреЛ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реИ

 $str = decode('cp866',$str) 


рдкрд░реНрд▓ рдХреЗ рдЖрдВрддрд░рд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рд░реВрдк, рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗред рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рд╣реИ рдХрд┐ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐, рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛, рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдВрддрд░рд┐рдХ рдкрд░реНрд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВред рдпрд╣ рднреА рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдкрд░реНрд▓ рдЕрдкрдиреЗ рдЖрдВрддрд░рд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рднрдВрдбрд╛рд░рдг рдкреНрд░рд╛рд░реВрдк рдХреЗ рд░реВрдк рдореЗрдВ UTF-8 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рдПрдХ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред 0-127 рд╕реЗ рдЗрд╕ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рд╡рд░реНрдг рдХреЛрдб рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ ASCII (US-ASCII) рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ рдЕрдВрдЧреНрд░реЗрдЬреА рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ 0 рд╕реЗ 127 рдХреЗ рдХреЛрдб рд╡рд╛рд▓реА рд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП uc рдХреЙрд▓ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рд┐рдВрдЧрд▓-рдмрд╛рдЗрдЯ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдЬрд┐рд╕рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред UTF8 рдХреЗ рд▓рд┐рдП, рд╕рдм рдХреБрдЫ рдЕрднреА рднреА рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЖрдкрдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

UTF-8 рдмрдирд╛рдо utf8 рдмрдирд╛рдо UTF8ред UTF-8 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╕рдордп рдХреЗ рд╕рд╛рде рдФрд░ рдЕрдзрд┐рдХ "рд╕рдЦреНрдд" рд╣реЛ рдЧрдпрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рд╡рд░реНрдгреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдирд┐рд╖рд┐рджреНрдз рдереА)ред рдЗрд╕рд▓рд┐рдП, рдкрд░реНрд▓ рдореЗрдВ UTF-8 рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрджрд╛рд╡рдирдд рд╣реИред рдкрд░реНрд▓ 5.8.7 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, "UTF-8" рдХрд╛ рдЕрд░реНрде рд╣реИ рдЖрдзреБрдирд┐рдХ "рдмреЛрд▓реА" рдЕрдзрд┐рдХ "рд╕рдЦреНрдд", рдЬрдмрдХрд┐ "utf8" рдХрд╛ рдЕрд░реНрде рдЕрдзрд┐рдХ "рдЙрджрд╛рд░ рдкреБрд░рд╛рдиреА рдмреЛрд▓реА" рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ

 use strict; use warnings; use Encode; #      UTF-8 my $str = "\x{FDD0}"; $str = encode("UTF-8",$str,1); #  $str = encode("utf8",$str,1); # OK 


рдЗрд╕ рдкреНрд░рдХрд╛рд░, "рдпреВрдЯреАрдПрдл" рдФрд░ "8" рдХреЗ рдмреАрдЪ рдХреА рд╣рд╛рдЗрдлрд╝рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ; рдЗрд╕рдХреЗ рдмрд┐рдирд╛, рдПрдирдХреЛрдб рдЕрдзрд┐рдХ рдЙрджрд╛рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдВрднрд╡рддрдГ рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЕрдЧрд░ рдЕрдорд▓ рдХрд░рдирд╛ рд╣реИ

 use strict; use warnings; use Encode; my $str = sprintf ("%s | %s | %s | %s | %s\n", find_encoding("UTF-8")->name , find_encoding("utf-8")->name , find_encoding("utf_8")->name , find_encoding("UTF8")->name , find_encoding("utf8")->name ); print $str; 

рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ - utf-8-рд╕рдЦреНрдд | utf-8-рд╕рдЦреНрдд | utf-8-рд╕рдЦреНрдд | utf8 | UTF8ред

рдХрдВрд╕реЛрд▓ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдВред рдУрдПрд╕ рдХреЗ рд╡рд┐рдВрдбреЛрдЬ рдкрд░рд┐рд╡рд╛рд░ рдХреЗ рдХрдВрд╕реЛрд▓ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЬреИрд╕рд╛ рдХрд┐ рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рдпреВрдирд┐рдХреЛрдб, рдПрдПрдирдПрд╕рдЖрдИ, рдУрдИрдПрдо рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИред рдУрдПрд╕ рдХрд╛ рдПрдкреАрдЖрдИ рд╕реНрд╡рдпрдВ 2 рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдЬреЛ ANSI рдФрд░ рдпреВрдирд┐рдХреЛрдб (UTF-16) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред ANSI OS рдХреЗ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рд░реВрд╕реА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдПрдиреНрдХреЛрдбрд┐рдВрдЧ CP1251 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдУрдИрдПрдо рдХрдВрд╕реЛрд▓ I / O рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╣реИ, рд░реВрд╕реА рднрд╛рд╖реА рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП, рдпрд╣ CP866 рд╣реИред рдпрд╣ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╣реИ рдЬрд┐рд╕реЗ рд░реВрд╕реА-рднрд╛рд╖рд╛ рдПрдордПрд╕-рдбреЙрд╕ рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдмрд╛рдж рдореЗрдВ рдкреБрд░рд╛рдиреЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рдЪрд▓реЗ рдЧрдПред рдЗрд╕реАрд▓рд┐рдП, utf-8 рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо

 use strict; use warnings; use Encode; use encoding 'utf8'; my $str = ' '; print $str; 


рдХрд╝реАрдорддреА рд░реЗрдЦрд╛ рдирд╣реАрдВ рдЫрд╛рдкреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди CP866 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреЗ рдкрд░ рд╣рдо UTF8 рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдПрдирдХреЛрдб :: рд▓реЛрдХреЗрд▓ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдпрд╣ ANSI рдФрд░ рдХрдВрд╕реЛрд▓ рдХреЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрд▓рд┐рдпрд╛рд╕ рдХрдВрд╕реЛрд▓_рдЗрди, рдХрдВрд╕реЛрд▓_рдЖрдЙрдЯ, рд▓реЛрдХреЗрд▓, рд▓реЛрдХреЗрд▓_рдлреИрдЯ рдмрдирд╛рддрд╛ рд╣реИред рдЬреЛ рдХреБрдЫ рднреА рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИ, рд╡рд╣ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓рдирд╛ рд╣реИред

 use strict; use warnings; use Encode::Locale; use Encode; use encoding 'utf8'; my $str = ' '; if (-t) { binmode(STDIN, ":encoding(console_in)"); binmode(STDOUT, ":encoding(console_out)"); binmode(STDERR, ":encoding(console_out)"); } print $str; 


PS рдпрд╣ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдкрд░реНрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╢рд╛рдпрдж рдпрд╣ рдмрд╣реБрдд рдХрдо рд╣реИред рдореИрдВ рд▓реЗрдЦ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрдЪреНрдЫрд╛рдУрдВ рдХреЛ рд╕реБрдирдиреЗ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВред

Source: https://habr.com/ru/post/In163439/


All Articles