การใช้ยูทิลิตี้คอนโซล DISM

💖 ชอบไหม?แชร์ลิงก์กับเพื่อนของคุณ

สวัสดีผู้อ่านบล็อกไซต์ที่รัก วันนี้เราจะพูดคุยกับคุณว่า krakozyabrs มาจากไหนบนเว็บไซต์และในโปรแกรมมีการเข้ารหัสข้อความใดบ้างและควรใช้อันใด เรามาดูรายละเอียดประวัติการพัฒนากันดีกว่า โดยเริ่มจาก ASCII พื้นฐาน รวมถึงเวอร์ชันขยาย CP866, KOI8-R, Windows 1251 และลงท้ายด้วยการเข้ารหัส Unicode Consortium สมัยใหม่ UTF 16 และ 8

สำหรับบางคน ข้อมูลนี้อาจดูเหมือนไม่จำเป็น แต่คุณรู้ไหมว่ามีคำถามกี่ข้อที่ฉันได้รับโดยเฉพาะเกี่ยวกับการรวบรวมข้อมูล krakozyabrs (ชุดอักขระที่อ่านไม่ได้) ตอนนี้ฉันจะมีโอกาสแนะนำทุกคนเกี่ยวกับเนื้อหาของบทความนี้และค้นหาข้อผิดพลาดของตัวเอง ก็เตรียมซึมซับข้อมูลและลองติดตามความลื่นไหลของเรื่องได้เลย

ASCII - การเข้ารหัสข้อความพื้นฐานสำหรับตัวอักษรละติน

การพัฒนาการเข้ารหัสข้อความเกิดขึ้นพร้อมกันกับการก่อตัวของอุตสาหกรรมไอทีและในช่วงเวลานี้พวกเขาสามารถเผชิญกับการเปลี่ยนแปลงได้ค่อนข้างมาก ในอดีต ทุกอย่างเริ่มต้นด้วย EBCDIC ซึ่งค่อนข้างไม่สอดคล้องกันในการออกเสียงภาษารัสเซีย ซึ่งทำให้สามารถเข้ารหัสตัวอักษรของตัวอักษรละติน เลขอารบิค และเครื่องหมายวรรคตอนด้วยอักขระควบคุมได้

แต่ถึงกระนั้นจุดเริ่มต้นสำหรับการพัฒนาการเข้ารหัสข้อความสมัยใหม่ก็ควรถือเป็นจุดที่มีชื่อเสียง แอสกี(รหัส American Standard สำหรับการแลกเปลี่ยนข้อมูล ซึ่งในภาษารัสเซียมักออกเสียงว่า "ask") โดยอธิบายอักขระ 128 ตัวแรกที่ใช้บ่อยที่สุดโดยผู้ใช้ที่พูดภาษาอังกฤษ - ตัวเลขอารบิก และเครื่องหมายวรรคตอน

อักขระ 128 ตัวที่อธิบายไว้ใน ASCII ยังรวมถึงอักขระบริการบางตัว เช่น วงเล็บปีกกา เครื่องหมายแฮช เครื่องหมายดอกจัน เป็นต้น ที่จริงแล้วคุณสามารถเห็นได้ด้วยตัวเอง:

อักขระ 128 ตัวเหล่านี้จาก ASCII เวอร์ชันดั้งเดิมที่ได้กลายเป็นมาตรฐานและในการเข้ารหัสอื่น ๆ คุณจะพบอักขระเหล่านี้และจะปรากฏตามลำดับนี้

แต่ความจริงก็คือด้วยความช่วยเหลือของข้อมูลหนึ่งไบต์คุณสามารถเข้ารหัสได้ไม่ใช่ 128 แต่มากถึง 256 ค่าที่แตกต่างกัน (สองยกกำลังแปดเท่ากับ 256) ดังนั้นหลังจาก Asuka เวอร์ชันพื้นฐานปรากฏขึ้น ทั้งซีรีย์ การเข้ารหัส ASCII แบบขยายซึ่งนอกเหนือจากอักขระพื้นฐาน 128 ตัวแล้ว ยังสามารถเข้ารหัสสัญลักษณ์ของการเข้ารหัสระดับชาติได้ (เช่น รัสเซีย)

ในที่นี้ อาจคุ้มค่าที่จะอธิบายเพิ่มเติมอีกเล็กน้อยเกี่ยวกับระบบตัวเลขที่ใช้ในคำอธิบาย ประการแรก อย่างที่คุณทราบกันดีว่าคอมพิวเตอร์ใช้งานได้เฉพาะกับตัวเลขในระบบไบนารี่เท่านั้น กล่าวคือ เลขศูนย์และเลข (“พีชคณิตแบบบูลีน” หากใครก็ตามที่สถาบันหรือโรงเรียน) ซึ่งแต่ละอันมีค่าเป็นสองยกกำลัง โดยเริ่มจากศูนย์ ไปจนถึงสองถึงตัวที่เจ็ด:

ไม่ใช่เรื่องยากที่จะเข้าใจว่าการรวมกันของศูนย์และค่าที่เป็นไปได้ทั้งหมดในโครงสร้างดังกล่าวสามารถมีได้เพียง 256 เท่านั้น การแปลงตัวเลขจากระบบไบนารี่เป็นระบบทศนิยมนั้นค่อนข้างง่าย คุณเพียงแค่ต้องรวมพลังทั้งหมดของทั้งสองเข้าด้วยกันโดยให้อันที่อยู่เหนือพวกมัน

ในตัวอย่างของเรา ผลลัพธ์ที่ได้คือ 1 (2 ยกกำลัง 0) บวก 8 (สองยกกำลัง 3) บวก 32 (สองยกกำลังห้า) บวก 64 (ยกกำลังหก) บวก 128 (ยกกำลังเจ็ด). ผลรวมเป็น 233 ในรูปแบบทศนิยม อย่างที่คุณเห็นทุกอย่างง่ายมาก

แต่ถ้าคุณดูตารางที่มีอักขระ ASCII อย่างใกล้ชิด คุณจะเห็นว่าอักขระเหล่านั้นแสดงอยู่ในการเข้ารหัสเลขฐานสิบหก ตัวอย่างเช่น "เครื่องหมายดอกจัน" สอดคล้องกับเลขฐานสิบหก 2A ในภาษา Aski คุณคงทราบแล้วว่าในระบบเลขฐานสิบหก นอกจากเลขอารบิคแล้ว ยังใช้ตัวอักษรละตินตั้งแต่ A (หมายถึงสิบ) ถึง F (หมายถึงสิบห้า) อีกด้วย

ถ้าอย่างนั้นสำหรับ การแปลงเลขฐานสองให้เป็นเลขฐานสิบหกใช้วิธีการที่เรียบง่ายและชัดเจนดังต่อไปนี้ ข้อมูลแต่ละไบต์จะถูกแบ่งออกเป็นสองส่วนของสี่บิต ดังที่แสดงในภาพหน้าจอด้านบน ที่. ในแต่ละครึ่งไบต์สามารถเข้ารหัสได้เพียงสิบหกค่า (สองถึงกำลังสี่) ในรูปแบบไบนารี่ซึ่งสามารถแสดงเป็นเลขฐานสิบหกได้อย่างง่ายดาย

ยิ่งไปกว่านั้น ในครึ่งซ้ายของไบต์ จะต้องนับองศาอีกครั้งโดยเริ่มจากศูนย์ และไม่เป็นไปตามที่แสดงในภาพหน้าจอ ด้วยเหตุนี้ จากการคำนวณแบบง่ายๆ เราจึงได้หมายเลข E9 ที่ถูกเข้ารหัสไว้ในภาพหน้าจอ ฉันหวังว่าแนวทางการใช้เหตุผลของฉันและวิธีแก้ปัญหาปริศนานี้ชัดเจนสำหรับคุณ ทีนี้มาพูดถึงการเข้ารหัสข้อความกันดีกว่า

การเข้ารหัส Asuka - CP866 และ KOI8-R เวอร์ชันขยายพร้อม pseudographics

ดังนั้นเราจึงเริ่มพูดถึง ASCII ซึ่งเป็นจุดเริ่มต้นสำหรับการพัฒนาการเข้ารหัสสมัยใหม่ทั้งหมด (Windows 1251, Unicode, UTF 8)

เริ่มแรกมีตัวอักษรละตินตัวเลขอารบิกและสิ่งอื่นเพียง 128 ตัว แต่ในเวอร์ชันขยายคุณสามารถใช้ค่าทั้งหมด 256 ค่าที่สามารถเข้ารหัสได้ในข้อมูลหนึ่งไบต์ เหล่านั้น. เป็นไปได้ที่จะเพิ่มสัญลักษณ์ตัวอักษรภาษาของคุณให้กับ Aski

ที่นี่เราจะต้องพูดนอกเรื่องอีกครั้งเพื่ออธิบาย - ทำไมเราต้องมีการเข้ารหัสเลย?ข้อความและเหตุใดจึงมีความสำคัญมาก อักขระบนหน้าจอคอมพิวเตอร์ของคุณถูกสร้างขึ้นบนพื้นฐานของสองสิ่ง - ชุดของรูปแบบเวกเตอร์ (การเป็นตัวแทน) ของอักขระต่าง ๆ (อยู่ในไฟล์ที่มี ) และโค้ดที่ให้คุณดึงออกมาจากชุดของรูปแบบเวกเตอร์นี้ (ไฟล์ฟอนต์ ) ตรงกับอักขระที่จะต้องแทรกในตำแหน่งที่ถูกต้อง

เห็นได้ชัดว่าแบบอักษรมีหน้าที่รับผิดชอบรูปร่างเวกเตอร์ แต่ระบบปฏิบัติการและโปรแกรมที่ใช้ในแบบอักษรนั้นมีหน้าที่รับผิดชอบในการเข้ารหัส เหล่านั้น. ข้อความใดๆ บนคอมพิวเตอร์ของคุณจะเป็นชุดไบต์ ซึ่งแต่ละข้อความจะเข้ารหัสอักขระตัวเดียวของข้อความนี้

โปรแกรมที่แสดงข้อความนี้บนหน้าจอ (โปรแกรมแก้ไขข้อความ เบราว์เซอร์ ฯลฯ) เมื่อแยกวิเคราะห์โค้ด อ่านการเข้ารหัสของอักขระถัดไป และค้นหารูปแบบเวกเตอร์ที่เกี่ยวข้องใน ไฟล์ที่ต้องการแบบอักษรที่เชื่อมต่อเพื่อแสดงเอกสารข้อความนี้ ทุกอย่างเรียบง่ายและซ้ำซาก

ซึ่งหมายความว่าในการเข้ารหัสอักขระใดๆ ที่เราต้องการ (เช่น จากตัวอักษรประจำชาติ) จะต้องเป็นไปตามเงื่อนไขสองประการ - รูปแบบเวกเตอร์ของอักขระนี้จะต้องอยู่ในแบบอักษรที่ใช้ และอักขระนี้สามารถเข้ารหัสในการเข้ารหัส ASCII แบบขยายใน หนึ่งไบต์ ดังนั้นจึงมีตัวเลือกดังกล่าวมากมาย สำหรับการเข้ารหัสอักขระภาษารัสเซียมี Aska แบบขยายหลายประเภท

ยกตัวอย่างแต่เดิมปรากฏ ซีพี866ซึ่งมีความสามารถในการใช้อักขระจากตัวอักษรรัสเซียและเป็นเวอร์ชันขยายของ ASCII

เหล่านั้น. ส่วนบนของมันใกล้เคียงกับเวอร์ชันพื้นฐานของ Aska อย่างสมบูรณ์ (อักขระละติน 128 ตัว ตัวเลขและอึอื่น ๆ ) ซึ่งนำเสนอในภาพหน้าจอด้านบน แต่ส่วนล่างของตารางที่มีการเข้ารหัส CP866 มีลักษณะที่ระบุไว้ในภาพหน้าจอด้านล่าง และอนุญาตให้คุณเข้ารหัสอีก 128 สัญญาณ (ตัวอักษรรัสเซียและนามแฝงทุกประเภท):

คุณเห็นไหมว่าในคอลัมน์ด้านขวา ตัวเลขเริ่มต้นด้วย 8 เพราะ... ตัวเลขตั้งแต่ 0 ถึง 7 หมายถึงส่วนพื้นฐานของ ASCII (ดูภาพหน้าจอแรก) ที่. ตัวอักษรรัสเซีย "M" ใน CP866 จะมีรหัส 9C (ตั้งอยู่ที่จุดตัดของแถวที่เกี่ยวข้องกับ 9 และคอลัมน์ที่มีหมายเลข C ในระบบเลขฐานสิบหก) ซึ่งสามารถเขียนได้ในข้อมูลหนึ่งไบต์และ หากมีแบบอักษรที่เหมาะสมพร้อมตัวอักษรรัสเซียตัวอักษรนี้จะปรากฏในข้อความโดยไม่มีปัญหา

เงินจำนวนนี้มาจากไหน? ภาพเทียมใน CP866- ประเด็นทั้งหมดก็คือการเข้ารหัสสำหรับข้อความภาษารัสเซียนี้ได้รับการพัฒนาย้อนกลับไปในช่วงหลายปีที่ผ่านมาซึ่งระบบปฏิบัติการแบบกราฟิกยังไม่แพร่หลายเท่าที่เป็นอยู่ในปัจจุบัน และใน Dosa และระบบปฏิบัติการข้อความที่คล้ายกัน pseudographics ทำให้อย่างน้อยก็ทำให้การออกแบบข้อความมีความหลากหลายได้ดังนั้น CP866 และเพื่อนร่วมงานอื่น ๆ ทั้งหมดจากหมวดหมู่ของ Asuka เวอร์ชันขยายจึงมีอยู่มากมาย

CP866 จัดจำหน่ายโดย IBM แต่นอกเหนือจากนี้ การเข้ารหัสจำนวนหนึ่งยังได้รับการพัฒนาสำหรับอักขระภาษารัสเซีย ตัวอย่างเช่น สามารถระบุประเภทเดียวกัน (ASCII แบบขยาย) ได้ KOI8-R:

หลักการทำงานของมันยังคงเหมือนกับของ CP866 ที่อธิบายไว้ก่อนหน้านี้เล็กน้อย - อักขระแต่ละตัวของข้อความจะถูกเข้ารหัสด้วยไบต์เดียว ภาพหน้าจอแสดงครึ่งหลังของตาราง KOI8-R เนื่องจาก ครึ่งแรกสอดคล้องกับ Asuka พื้นฐานอย่างสมบูรณ์ซึ่งแสดงไว้ในภาพหน้าจอแรกของบทความนี้

ในบรรดาคุณสมบัติของการเข้ารหัส KOI8-R สามารถสังเกตได้ว่าตัวอักษรรัสเซียในตารางไม่เรียงตามตัวอักษรดังเช่นที่ทำใน CP866

หากคุณดูภาพหน้าจอแรกสุด (ของส่วนพื้นฐานซึ่งรวมอยู่ในการเข้ารหัสแบบขยายทั้งหมด) คุณจะสังเกตเห็นว่าในตัวอักษรรัสเซีย KOI8-R จะอยู่ในเซลล์เดียวกันกับตารางเป็นตัวอักษรที่สอดคล้องกันของตัวอักษรละติน จากส่วนแรกของตาราง สิ่งนี้ทำเพื่อความสะดวกในการเปลี่ยนจากอักขระภาษารัสเซียเป็นภาษาละตินโดยทิ้งเพียงหนึ่งบิต (สองยกกำลังเจ็ดหรือ 128)

Windows 1251 - ASCII เวอร์ชันใหม่ และเหตุใดจึงมีรอยแตกร้าว

การพัฒนาการเข้ารหัสข้อความเพิ่มเติมนั้นเกิดจากการที่ระบบปฏิบัติการแบบกราฟิกได้รับความนิยมและความจำเป็นในการใช้ระบบเทียมในนั้นก็หายไปเมื่อเวลาผ่านไป เป็นผลให้ทั้งกลุ่มเกิดขึ้นโดยพื้นฐานแล้วยังคงเป็นเวอร์ชันขยายของ Asuka (ข้อความหนึ่งอักขระถูกเข้ารหัสด้วยข้อมูลเพียงไบต์เดียว) แต่ไม่มีการใช้สัญลักษณ์เทียม

พวกมันอยู่ในการเข้ารหัส ANSI ที่เรียกว่าซึ่งพัฒนาโดย American Standards Institute ตามสำนวนทั่วไป ชื่อ Cyrillic ยังใช้สำหรับเวอร์ชันที่รองรับภาษารัสเซีย ตัวอย่างของสิ่งนี้จะเป็น

มันแตกต่างอย่างดีจาก CP866 และ KOI8-R ที่ใช้ก่อนหน้านี้ตรงที่ตำแหน่งของสัญลักษณ์เทียมนั้นถูกยึดครองโดยสัญลักษณ์ที่หายไปของตัวพิมพ์รัสเซีย (ยกเว้นเครื่องหมายเน้นเสียง) รวมถึงสัญลักษณ์ที่ใช้ในภาษาสลาฟใกล้กับ รัสเซีย (ยูเครน, เบลารุส ฯลฯ ):

เนื่องจากมีการเข้ารหัสภาษารัสเซีย ผู้ผลิตและผู้ผลิตแบบอักษรมากมาย ซอฟต์แวร์อาการปวดหัวเกิดขึ้นตลอดเวลา และคุณและฉันผู้อ่านที่รัก มักจะมีชื่อเสียงเหมือนกัน คราโคซซาบรีเมื่อมีความสับสนกับเวอร์ชันที่ใช้ในข้อความ

บ่อยครั้งมากที่พวกเขาปรากฏขึ้นเมื่อส่งและรับข้อความผ่าน อีเมลซึ่งก่อให้เกิดการสร้างตารางการแปลงที่ซับซ้อนมาก ซึ่งโดยพื้นฐานแล้วไม่สามารถแก้ปัญหานี้ได้ และผู้ใช้มักจะใช้สำหรับการติดต่อเพื่อหลีกเลี่ยงลูกเล่นที่ฉาวโฉ่เมื่อใช้การเข้ารหัสภาษารัสเซีย เช่น CP866, KOI8-R หรือ Windows 1251

ในความเป็นจริง krakozyabrs ที่ปรากฏแทนข้อความภาษารัสเซียเป็นผลมาจากการใช้การเข้ารหัสที่ไม่ถูกต้อง ของภาษานี้ซึ่งไม่ตรงกับอันที่เข้ารหัส ข้อความเริ่มแรก

สมมติว่าหากคุณพยายามแสดงอักขระที่เข้ารหัสโดยใช้ CP866 โดยใช้ตารางรหัส Windows 1251 คำที่ไม่มีความหมายเดียวกันนี้ (ชุดอักขระที่ไม่มีความหมาย) จะปรากฏขึ้นมาแทนที่ข้อความในข้อความโดยสมบูรณ์

สถานการณ์ที่คล้ายกันมักเกิดขึ้นในฟอรัมหรือบล็อกเมื่อข้อความที่มีตัวอักษรรัสเซียถูกบันทึกอย่างผิดพลาดในการเข้ารหัสที่ไม่ถูกต้องซึ่งใช้บนไซต์ตามค่าเริ่มต้นหรือในการเข้ารหัสที่ไม่ถูกต้อง โปรแกรมแก้ไขข้อความซึ่งเพิ่มมุขตลกให้กับโค้ดที่ไม่สามารถมองเห็นได้ด้วยตาเปล่า

ในท้ายที่สุด หลายคนเบื่อหน่ายกับสถานการณ์นี้ด้วยการเข้ารหัสจำนวนมากและคืบคลานเข้ามาอย่างต่อเนื่องและมีข้อกำหนดเบื้องต้นสำหรับการสร้างรูปแบบสากลใหม่ที่จะแทนที่รูปแบบที่มีอยู่ทั้งหมดและในที่สุดก็จะแก้ไขปัญหาด้วยรูปลักษณ์ภายนอก ของข้อความที่ไม่สามารถอ่านได้ นอกจากนั้นยังเกิดปัญหาภาษาอย่างภาษาจีนซึ่งมีตัวอักษรภาษามากกว่า 256 ตัวอีกด้วย

Unicode - การเข้ารหัสสากล UTF 8, 16 และ 32

อักขระนับพันของกลุ่มภาษาเอเชียตะวันออกเฉียงใต้เหล่านี้ไม่สามารถอธิบายได้ในข้อมูลหนึ่งไบต์ ซึ่งจัดสรรไว้สำหรับการเข้ารหัสอักขระใน ASCII เวอร์ชันขยาย เป็นผลให้มีการสร้างกลุ่มที่เรียกว่า ยูนิโค้ด(Unicode - Unicode Consortium) ด้วยความร่วมมือของผู้นำในอุตสาหกรรมไอทีจำนวนมาก (ผู้ผลิตซอฟต์แวร์ที่เข้ารหัสฮาร์ดแวร์ผู้สร้างแบบอักษร) ซึ่งสนใจการเกิดขึ้นของการเข้ารหัสข้อความสากล

รูปแบบแรกที่เผยแพร่ภายใต้การอุปถัมภ์ของ Unicode Consortium คือ UTF32- หมายเลขในชื่อการเข้ารหัสหมายถึงจำนวนบิตที่ใช้ในการเข้ารหัสอักขระหนึ่งตัว 32 บิตเท่ากับข้อมูล 4 ไบต์ที่จำเป็นในการเข้ารหัสอักขระตัวเดียวในการเข้ารหัส UTF สากลใหม่

เป็นผลให้ไฟล์เดียวกันกับข้อความที่เข้ารหัสใน ASCII เวอร์ชันขยายและ UTF-32 ในกรณีหลังจะมีขนาด (น้ำหนัก) ใหญ่กว่าสี่เท่า สิ่งนี้ไม่ดี แต่ตอนนี้เรามีโอกาสที่จะเข้ารหัสโดยใช้ YTF จำนวนอักขระเท่ากับสองตัวยกกำลังสามสิบวินาที ( พันล้านตัวอักษรซึ่งจะครอบคลุมค่าที่จำเป็นจริงๆ ด้วยส่วนต่างมหาศาล)

แต่หลายประเทศที่มีภาษาของกลุ่มยุโรปไม่จำเป็นต้องใช้อักขระจำนวนมากเช่นนี้ในการเข้ารหัสเลยอย่างไรก็ตามเมื่อใช้ UTF-32 พวกเขาได้รับน้ำหนักของเอกสารข้อความเพิ่มขึ้นสี่เท่าโดยไม่มีเหตุผล และส่งผลให้ปริมาณการรับส่งข้อมูลอินเทอร์เน็ตและข้อมูลที่จัดเก็บเพิ่มขึ้น นี่เป็นจำนวนมากและไม่มีใครสามารถจ่ายขยะเช่นนี้ได้

จากการพัฒนา Unicode UTF-16ซึ่งกลับกลายเป็นว่าประสบความสำเร็จอย่างมากจนถูกนำมาใช้เป็นพื้นที่พื้นฐานสำหรับตัวละครทั้งหมดที่เราใช้โดยค่าเริ่มต้น ใช้สองไบต์ในการเข้ารหัสอักขระหนึ่งตัว มาดูกันว่าสิ่งนี้มีลักษณะอย่างไร

ในระบบปฏิบัติการ Windows คุณสามารถปฏิบัติตามเส้นทาง "เริ่ม" - "โปรแกรม" - "อุปกรณ์เสริม" - "เครื่องมือระบบ" - "ตารางอักขระ" เป็นผลให้ตารางจะเปิดขึ้นพร้อมกับรูปร่างเวกเตอร์ของแบบอักษรทั้งหมดที่ติดตั้งในระบบของคุณ หากคุณเลือกชุดอักขระ Unicode ใน "ตัวเลือกขั้นสูง" คุณจะสามารถเห็นช่วงอักขระทั้งหมดที่รวมอยู่ในแบบอักษรแต่ละแบบอักษรแยกกัน

โดยวิธีการคลิกที่รายการใดรายการหนึ่งคุณจะเห็นสองไบต์ รหัสในรูปแบบ UTF-16ประกอบด้วยเลขฐานสิบหกสี่หลัก:

สามารถเข้ารหัสอักขระ UTF-16 ได้กี่ตัวโดยใช้ 16 บิต 65,536 (สองยกกำลังสิบหก) และนี่คือตัวเลขที่นำมาใช้เป็นช่องว่างฐานใน Unicode นอกจากนี้ มีวิธีการเข้ารหัสประมาณสองล้านอักขระโดยใช้วิธีนี้ แต่วิธีเหล่านี้ถูกจำกัดไว้เพียงพื้นที่ขยายข้อความหนึ่งล้านอักขระ

แต่ถึงแม้การเข้ารหัส Unicode เวอร์ชันที่ประสบความสำเร็จนี้ก็ไม่ได้สร้างความพึงพอใจให้กับผู้ที่เขียนโปรแกรมเช่นเฉพาะในเท่านั้น ภาษาอังกฤษเนื่องจากหลังจากการเปลี่ยนจาก ASCII เวอร์ชันขยายเป็น UTF-16 น้ำหนักของเอกสารเพิ่มขึ้นสองเท่า (หนึ่งไบต์ต่ออักขระใน Aski และสองไบต์ต่ออักขระเดียวกันใน UTF-16)

มันเป็นการสร้างความพึงพอใจให้กับทุกคนและทุกสิ่งในกลุ่ม Unicode ที่ได้รับการตัดสินใจที่จะเกิดขึ้น การเข้ารหัสความยาวแปรผัน- มันถูกเรียกว่า UTF-8 แม้จะมีชื่อแปดอัน แต่จริงๆ แล้วมีความยาวผันแปรได้ เช่น อักขระของข้อความแต่ละตัวสามารถเข้ารหัสเป็นลำดับความยาวหนึ่งถึงหกไบต์

ในทางปฏิบัติ UTF-8 ใช้ช่วงตั้งแต่ 1 ถึง 4 ไบต์เท่านั้น เนื่องจากโค้ดที่เกิน 4 ไบต์ ในทางทฤษฎีแล้วเป็นไปไม่ได้ที่จะจินตนาการถึงสิ่งใดๆ อีกต่อไป อักขระละตินทั้งหมดในนั้นจะถูกเข้ารหัสเป็นหนึ่งไบต์ เช่นเดียวกับใน ASCII แบบเก่าที่ดี

สิ่งที่น่าสังเกตคือในกรณีของการเข้ารหัสเฉพาะตัวอักษรละติน แม้แต่โปรแกรมที่ไม่เข้าใจ Unicode ก็จะยังคงอ่านสิ่งที่เข้ารหัสใน YTF-8 เหล่านั้น. ส่วนหลักของอาซึกะถูกย้ายไปยังการสร้างกลุ่ม Unicode นี้

อักขระซีริลลิกใน UTF-8 จะถูกเข้ารหัสเป็นสองไบต์ และตัวอย่างเช่น อักขระจอร์เจียจะถูกเข้ารหัสเป็นสามไบต์ Unicode Consortium หลังจากสร้าง UTF 16 และ 8 ได้แก้ไขปัญหาหลักแล้ว - ตอนนี้เรามีแล้ว แบบอักษรมีพื้นที่รหัสเดียว- และตอนนี้ผู้ผลิตสามารถเติมด้วยอักขระข้อความในรูปแบบเวกเตอร์ตามจุดแข็งและความสามารถเท่านั้น ตอนนี้ยังมาเป็นชุดเลย

ใน "ตารางอักขระ" ด้านบน คุณจะเห็นว่าแบบอักษรที่ต่างกันรองรับจำนวนอักขระที่ต่างกัน ฟอนต์แบบ Unicode บางตัวอาจมีขนาดค่อนข้างหนัก แต่ตอนนี้พวกเขาไม่ได้แตกต่างกันในความจริงที่ว่าพวกมันถูกสร้างขึ้นสำหรับการเข้ารหัสที่แตกต่างกัน แต่ในความจริงที่ว่าผู้ผลิตฟอนต์มีหรือไม่ได้เติมพื้นที่โค้ดเดียวด้วยรูปแบบเวกเตอร์บางอย่างอย่างสมบูรณ์

คำบ้า ๆ แทนตัวอักษรรัสเซีย - วิธีแก้ไข

ตอนนี้เรามาดูกันว่า krakozyabrs ปรากฏแทนข้อความอย่างไรหรือกล่าวอีกนัยหนึ่งคือเลือกการเข้ารหัสที่ถูกต้องสำหรับข้อความภาษารัสเซียอย่างไร ที่จริงแล้วมันถูกตั้งค่าไว้ในโปรแกรมที่คุณสร้างหรือแก้ไขข้อความนี้หรือโค้ดโดยใช้ส่วนของข้อความ

สำหรับการแก้ไขและการสร้าง ไฟล์ข้อความโดยส่วนตัวแล้วผมใช้ตัวที่ดีมากในความคิดของผม . อย่างไรก็ตาม ยังสามารถเน้นไวยากรณ์ได้อีกด้วย ร้อยที่ดีภาษาโปรแกรมและมาร์กอัปและยังมีความสามารถในการขยายโดยใช้ปลั๊กอิน อ่าน การตรวจสอบโดยละเอียดโปรแกรมที่ยอดเยี่ยมนี้ตามลิงค์ที่ให้ไว้

ในเมนูด้านบนของ Notepad++ มีรายการ "การเข้ารหัส" ซึ่งคุณจะมีโอกาสแปลงตัวเลือกที่มีอยู่เป็นตัวเลือกที่ใช้เป็นค่าเริ่มต้นบนไซต์ของคุณ:

ในกรณีของไซต์บน Joomla 1.5 ขึ้นไป รวมถึงในกรณีของบล็อกบน WordPress คุณควรเลือกตัวเลือกเพื่อหลีกเลี่ยงไม่ให้เกิดการแคร็ก UTF 8 โดยไม่มี BOM- คำนำหน้า BOM คืออะไร

ความจริงก็คือเมื่อพวกเขากำลังพัฒนาการเข้ารหัส YUTF-16 ด้วยเหตุผลบางอย่างพวกเขาจึงตัดสินใจแนบมันเข้ากับมันเช่นความสามารถในการเขียนโค้ดอักขระทั้งในลำดับโดยตรง (เช่น 0A15) และย้อนกลับ (150A) . และเพื่อให้โปรแกรมเข้าใจได้อย่างแม่นยำในลำดับการอ่านโค้ดจึงถูกประดิษฐ์ขึ้น บอม(Byte Order Mark หรืออีกนัยหนึ่งคือลายเซ็น) ซึ่งแสดงด้วยการเพิ่มสามไบต์เพิ่มเติมที่จุดเริ่มต้นของเอกสาร

ในการเข้ารหัส UTF-8 ไม่มีการจัดเตรียม BOM ไว้ในกลุ่ม Unicode ดังนั้นการเพิ่มลายเซ็น (สามไบต์พิเศษที่มีชื่อเสียงเหล่านั้นที่ตอนต้นของเอกสาร) เป็นเพียงการป้องกันไม่ให้บางโปรแกรมอ่านโค้ด ดังนั้นเมื่อบันทึกไฟล์ในรูปแบบ UTF เราต้องเลือกตัวเลือกที่ไม่มี BOM เสมอ (ไม่มีลายเซ็น) ดังนั้นคุณจึงล่วงหน้า ป้องกันตัวเองจากการคลาน krakozyabrs.

สิ่งที่น่าสังเกตคือบางโปรแกรมใน Windows ไม่สามารถทำได้ (ไม่สามารถบันทึกข้อความใน UTF-8 โดยไม่มี BOM) ตัวอย่างเช่น Windows Notepad ที่มีชื่อเสียงเหมือนกัน จะบันทึกเอกสารในรูปแบบ UTF-8 แต่ยังคงเพิ่มลายเซ็น (พิเศษสามไบต์) ที่จุดเริ่มต้นของเอกสาร ยิ่งไปกว่านั้น ไบต์เหล่านี้จะเหมือนกันเสมอ - อ่านโค้ดตามลำดับโดยตรง แต่บนเซิร์ฟเวอร์เนื่องจากสิ่งเล็กน้อยนี้ปัญหาอาจเกิดขึ้นได้ - โจรจะออกมา

ดังนั้นไม่ว่าในกรณีใดก็ตาม อย่าใช้แผ่นจดบันทึก Windows ทั่วไปเพื่อแก้ไขเอกสารบนไซต์ของคุณหากคุณไม่ต้องการให้มีรอยร้าวปรากฏขึ้น ดีที่สุดและมากที่สุด ตัวเลือกง่ายๆฉันพิจารณาโปรแกรมแก้ไข Notepad ++ ที่กล่าวถึงแล้วซึ่งไม่มีข้อเสียจริงและประกอบด้วยข้อดีเท่านั้น

ใน Notepad++ เมื่อคุณเลือกการเข้ารหัส คุณจะมีตัวเลือกในการแปลงข้อความเป็นการเข้ารหัส UCS-2 ซึ่งใกล้เคียงกับมาตรฐาน Unicode มาก นอกจากนี้ใน Notepad ยังสามารถเข้ารหัสข้อความใน ANSI ได้เช่น ในส่วนที่เกี่ยวข้องกับภาษารัสเซีย นี่จะเป็น Windows 1251 ซึ่งเราได้อธิบายไว้ข้างต้นแล้ว ข้อมูลนี้มาจากไหน

มีการลงทะเบียนในทะเบียนของคุณ ระบบปฏิบัติการ Windows - การเข้ารหัสใดให้เลือกในกรณีของ ANSI ซึ่งจะเลือกในกรณีของ OEM (สำหรับภาษารัสเซียจะเป็น CP866) หากคุณติดตั้งภาษาเริ่มต้นอื่นบนคอมพิวเตอร์ของคุณ การเข้ารหัสเหล่านี้จะถูกแทนที่ด้วยภาษาที่คล้ายกันจากหมวดหมู่ ANSI หรือ OEM สำหรับภาษาเดียวกันนั้น

หลังจากที่คุณบันทึกเอกสารใน Notepad++ ในการเข้ารหัสที่คุณต้องการหรือเปิดเอกสารจากไซต์เพื่อแก้ไข คุณจะเห็นชื่อเอกสารที่มุมขวาล่างของตัวแก้ไข:

เพื่อหลีกเลี่ยงคนเสื้อแดงนอกเหนือจากการดำเนินการที่อธิบายไว้ข้างต้นแล้ว จะมีประโยชน์ที่จะรวมข้อมูลเกี่ยวกับการเข้ารหัสนี้ไว้ในส่วนหัวของซอร์สโค้ดของทุกหน้าของไซต์ เพื่อไม่ให้เกิดความสับสนบนเซิร์ฟเวอร์หรือโฮสต์ในเครื่อง

โดยทั่วไป ภาษามาร์กอัปไฮเปอร์เท็กซ์ทั้งหมดยกเว้น Html จะใช้การประกาศ xml พิเศษซึ่งระบุการเข้ารหัสข้อความ

ก่อนที่จะแยกวิเคราะห์โค้ด เบราว์เซอร์จะรู้ว่ากำลังใช้เวอร์ชันใด และต้องตีความโค้ดอักขระของภาษานั้นอย่างไร แต่สิ่งที่น่าสังเกตก็คือ หากคุณบันทึกเอกสารใน Unicode เริ่มต้น การประกาศ xml นี้สามารถละเว้นได้ (การเข้ารหัสจะถือเป็น UTF-8 หากไม่มี BOM หรือ UTF-16 หากมี BOM)

ในกรณีของเอกสารภาษา Html การเข้ารหัสจะใช้เพื่อระบุ องค์ประกอบเมตาซึ่งเขียนไว้ระหว่างแท็กเปิดและแท็กปิด Head:

... ...

รายการนี้ค่อนข้างแตกต่างจากที่นำมาใช้ แต่เป็นไปตามมาตรฐาน Html 5 ใหม่ที่กำลังเปิดตัวอย่างช้าๆ โดยสมบูรณ์ และเบราว์เซอร์ใดๆ ก็ตามที่ใช้อยู่ในปัจจุบันจะเข้าใจได้อย่างถูกต้องโดยสมบูรณ์

ตามทฤษฎีแล้ว ควรวางองค์ประกอบ Meta ที่ระบุการเข้ารหัสเอกสาร Html จะดีกว่า ให้สูงที่สุดในส่วนหัวของเอกสารเพื่อที่ว่าในขณะที่พบอักขระตัวแรกในข้อความที่ไม่ได้มาจาก ANSI พื้นฐาน (ซึ่งจะอ่านอย่างถูกต้องและในรูปแบบใด ๆ ) เบราว์เซอร์ควรมีข้อมูลวิธีตีความรหัสของอักขระเหล่านี้อยู่แล้ว

ขอให้โชคดี! พบกันเร็ว ๆ นี้ในหน้าของเว็บไซต์บล็อก

คุณอาจจะสนใจ

ที่อยู่ URL คืออะไร ลิงก์แบบสัมบูรณ์และลิงก์สัมพัทธ์สำหรับเว็บไซต์แตกต่างกันอย่างไร
OpenServer - เซิร์ฟเวอร์ภายในที่ทันสมัยและตัวอย่างวิธีใช้เพื่อติดตั้ง WordPress บนคอมพิวเตอร์ของคุณ
Chmod คืออะไร สิทธิ์ใดในการกำหนดให้กับไฟล์และโฟลเดอร์ (777, 755, 666) และวิธีดำเนินการผ่าน PHP
ค้นหายานเดกซ์ตามไซต์และร้านค้าออนไลน์

บางครั้งมีบางอย่างเกิดขึ้นกับผู้ใช้ Windows OS ด้วยเหตุผลใดก็ตามซึ่งนำไปสู่ความล้มเหลวในการเข้ารหัส คุณไม่มีทางรู้หรอกว่าโปรแกรมที่เพิ่งติดตั้งใหม่ ไวรัส การบงการในรีจิสทรี... การเข้ารหัสหายไป แค่นั้นแหละ!

สิ่งที่คล้ายกันเกิดขึ้นกับฉันเมื่อวันก่อน ในบางโปรแกรม Russified คำจารึกอินเทอร์เฟซบางส่วนเริ่มดูราวกับว่ามีการแทรกลายอุ้งเท้านกแทนตัวอักษร:

พูดตามตรง ฉันใช้เวลาเกือบสองวันในการค้นหาวิธีแก้ไขปัญหา ในฟอรัมและบริการ "คำถามและคำตอบ" ทั้งหมด ในคู่มือและคำแนะนำทั้งหมด ทุกคนทำซ้ำสูตรการแก้ปัญหาเดียวกันซึ่งอาจช่วยใครบางคนได้ แต่ไม่ใช่สำหรับฉัน และเมื่อสมองของฉันเริ่มเดือดและหมดความหวังในการแก้ปัญหา ทุกอย่างก็เข้าที่

ฉันตัดสินใจจัดรูปแบบผลการค้นหาเป็น “ คำแนะนำแบบครบวงจรในการแก้ปัญหาการเข้ารหัสห้องผ่าตัดทั้งหมด ระบบวินโดวส์ XP และ Windows Vista/7- แม้ว่าอาจจะไม่เป็นสากลนักก็ตาม... ;)

การแก้ไขปัญหาการเข้ารหัสใน Windows XP:

จุดที่ 1. ก่อนอื่นคุณต้องแน่ใจว่ามีการติดตั้งภาษารัสเซียสำหรับโปรแกรมที่ไม่รองรับ Unicode

กำลังเปิด « แผงควบคุม» และดับเบิลคลิกที่ไอคอน « » - ไปที่แท็บ « นอกจากนี้» « ».

หลังจากนั้นให้ค้นหารายการ 20880 ในรายการที่อยู่ในแท็บเดียวกันและทำเครื่องหมายที่ช่องถัดจาก:

จุดที่ 2 อาจเป็นไปได้ว่าปัญหาการเข้ารหัสเกิดจากการละเมิดการตั้งค่าแบบอักษรของระบบ

หากต้องการคืนค่าการตั้งค่าแบบอักษร ให้ดาวน์โหลดไฟล์เก็บถาวรนี้


จุดที่ 3 ขั้นตอนต่อไปคือการเปลี่ยนคีย์รีจิสทรีที่รับผิดชอบในการเข้ารหัสขอแนะนำให้ทำการเปลี่ยนแปลงเหล่านี้เป็นทางเลือกสุดท้ายเท่านั้นและเฉพาะในกรณีที่คะแนนก่อนหน้าทั้งหมดไม่ได้นำไปสู่ที่ไหนเลย

ที่เก็บถาวรนี้

การแก้ปัญหาการเข้ารหัสใน Windows Vista/7:

1. เช่นเดียวกับในกรณีของ Windows XP ขั้นแรกตรวจสอบให้แน่ใจว่าสำหรับโปรแกรมที่ไม่รองรับ Unicode ภาษาจะถูกตั้งค่าเป็นภาษารัสเซีย

กำลังเปิด « แผงควบคุม» และดับเบิลคลิกที่ไอคอน « ภูมิภาคและภาษา» - ไปที่แท็บ « นอกจากนี้» และตั้งค่าภาษารัสเซียเป็น « ภาษาของโปรแกรมที่ไม่รองรับ Unicode»:

บันทึกการเปลี่ยนแปลงและรีสตาร์ทคอมพิวเตอร์ของคุณ หากปัญหายังคงอยู่ ให้ไปที่ขั้นตอนที่ 2

2. หากต้องการคืนค่าการตั้งค่าแบบอักษร ให้ดาวน์โหลดไฟล์เก็บถาวรนี้และเรียกใช้ไฟล์ที่อยู่ในนั้น โดยไม่สนใจคำเตือนของระบบทั้งหมด:


รีสตาร์ทระบบ หากปัญหายังคงมีอยู่ ให้ไปที่ขั้นตอนที่ 3

3. ขั้นตอนต่อไปคือการเปลี่ยนคีย์รีจิสทรีที่รับผิดชอบในการเข้ารหัส ขอแนะนำให้ทำการเปลี่ยนแปลงเหล่านี้เป็นทางเลือกสุดท้ายเท่านั้นและเฉพาะในกรณีที่คะแนนก่อนหน้าทั้งหมดไม่ได้นำไปสู่ที่ไหนเลย

หากต้องการทำการเปลี่ยนแปลง ให้ดาวน์โหลดไฟล์เก็บถาวรนี้และเรียกใช้ไฟล์ที่อยู่ในนั้น เช่นเดียวกับในย่อหน้าก่อนหน้า คำเตือนของระบบจะปรากฏขึ้น

หลังจากการเปลี่ยนแปลงเหล่านี้ คุณจะต้องรีสตาร์ทระบบด้วย

4. หากทั้งหมดที่กล่าวมาข้างต้นไม่สามารถช่วยได้ คุณจะต้องเปลี่ยนชื่อของไฟล์โค้ดเพจต่อไปนี้ในโฟลเดอร์ ค:\Windows\System32:

ไฟล์ " c_1252.nls" ถึง " c_1252.nls.bak»
ไฟล์ " c_1253.nls" ถึง " c_1253.nls.bak»
ไฟล์ " c_1254.nls" ถึง " c_1254.nls.bak»
ไฟล์ " c_1255.nls" ถึง " c_1255.nls.bak»

เนื่องจากไฟล์เหล่านี้ได้รับการปกป้องจากการดัดแปลง จึงแนะนำให้ใช้โปรแกรมที่ยอดเยี่ยม คุณสามารถดาวน์โหลดโปรแกรมได้จาก

ในช่วงต้นทศวรรษที่ 90 เมื่อสหภาพโซเวียตล่มสลายและเขตแดนของรัสเซียเปิดกว้างเราก็เริ่มได้รับ ผลิตภัณฑ์ซอฟต์แวร์การผลิตแบบตะวันตก โดยปกติแล้วพวกเขาทั้งหมดพูดภาษาอังกฤษ ขณะเดียวกันอินเทอร์เน็ตก็เริ่มพัฒนาขึ้น ปัญหาของ Russification ของทรัพยากรและโปรแกรมกลายเป็นเรื่องรุนแรง จากนั้นจึงคิดค้นการเข้ารหัส Windows ของรัสเซีย 1251 ซึ่งช่วยให้คุณสามารถแสดงตัวอักษรของตัวอักษรสลาฟได้อย่างถูกต้อง:

  • รัสเซีย;
  • ยูเครน;
  • เบลารุส;
  • เซอร์เบีย;
  • บัลแกเรีย;
  • มาซิโดเนีย

การพัฒนาดำเนินการโดยสำนักงานตัวแทนของรัสเซียของ Microsoft ร่วมกับบริษัท Dialog และ Paragraph พื้นฐานนำมาจากการพัฒนาที่เขียนขึ้นเองซึ่งในปี 1990-91 ได้รับการเผยแพร่ในหมู่นักอุดมการณ์ด้านไอทีไม่กี่คนในรัสเซีย

จนถึงปัจจุบันมากกว่า วิธีการสากลเข้ารหัสอักขระ - UTF-8 (Unicode) คิดเป็นเกือบ 90% ของซอฟต์แวร์และทรัพยากรบนเว็บทั้งหมด Windows 1251 ถูกใช้ใน 1.6% ของกรณี (ข้อมูลจากการสำรวจเทคโนโลยีเว็บ)

เว็บไซต์เข้ารหัส utf 8 หรือ windows 1251?

เพื่อตอบคำถามนี้ คุณต้องเข้าใจเพียงเล็กน้อยว่าการเข้ารหัสคืออะไรและมีความแตกต่างกันอย่างไร ข้อมูลข้อความ เช่นเดียวกับข้อมูลอื่นๆ จะถูกจัดเก็บไว้ในคอมพิวเตอร์ในรูปแบบที่เข้ารหัส มันง่ายกว่าสำหรับเราที่จะคิดว่ามันเป็นตัวเลข อักขระแต่ละตัวสามารถครอบครองหนึ่งไบต์ขึ้นไป Windows 1251 เป็นการเข้ารหัสแบบไบต์เดียว ในขณะที่ UTF-8 เป็นการเข้ารหัสแบบแปดไบต์ ซึ่งหมายความว่าสามารถเข้ารหัสได้เพียง 256 อักขระใน Windows 1251
เนื่องจากทุกอย่างลงมาที่ระบบไบนารี่ และไบต์คือ 8 บิต (0 และ 1) จำนวนชุดค่าผสมสูงสุดคือ 28 = 256 Unicode ช่วยให้คุณแสดงอักขระจำนวนมากขึ้นมาก และสามารถจัดสรรขนาดที่ใหญ่ขึ้นได้ สำหรับแต่ละ

นี่คือข้อดีของ Unicode ดังต่อไปนี้:

  1. ในส่วนหัวของไซต์ คุณควรระบุการเข้ารหัสที่ใช้ มิฉะนั้น “สัญลักษณ์ประหลาด” จะแสดงแทนสัญลักษณ์ และ Unicode ก็เป็นมาตรฐานสำหรับเบราว์เซอร์ทั้งหมด - โดยจะตรวจจับได้ทันทีว่าติดตั้งไว้ตามค่าเริ่มต้น
  2. สัญลักษณ์ของไซต์จะยังคงเหมือนเดิมไม่ว่าทรัพยากรจะถูกโหลดในประเทศใดก็ตาม สิ่งนี้ไม่ได้ขึ้นอยู่กับตำแหน่งทางภูมิศาสตร์ของเซิร์ฟเวอร์ แต่ขึ้นอยู่กับภาษาซอฟต์แวร์ของเวิร์กสเตชันไคลเอนต์ เห็นได้ชัดว่าผู้ที่อาศัยอยู่ในโปรตุเกสใช้แป้นพิมพ์และซอฟต์แวร์ทั้งหมด รวมถึงระบบปฏิบัติการ ในภาษาของตนเอง คอมพิวเตอร์ของเขาน่าจะไม่มี Windows 1251 เลย และหากเป็นกรณีนี้ ไซต์ในภาษารัสเซียจะเปิดไม่ถูกต้อง ในทางกลับกัน Unicode จะถูก "เดินสาย" เข้ากับระบบปฏิบัติการใด ๆ ในภาษาใดก็ได้
  3. UTF-8 ช่วยให้คุณสามารถเข้ารหัสอักขระได้มากขึ้น บน ในขณะนี้ใช้ 6 ไบต์จาก 8 ไบต์ และอักขระภาษารัสเซียเข้ารหัสเป็น 2 ไบต์
    ด้วยเหตุนี้จึงควรใช้การเข้ารหัสสากลมากกว่าการเข้ารหัสแบบพิเศษซึ่งใช้เฉพาะในประเทศสลาฟเท่านั้น

ตารางการเข้ารหัส Windows 1251

สำหรับโปรแกรมเมอร์และนักพัฒนาเว็บไซต์ บางครั้งจำเป็นต้องทราบหมายเลขสัญลักษณ์ เพื่อจุดประสงค์นี้จึงใช้ตารางการเข้ารหัสพิเศษ ด้านล่างนี้เป็นตารางสำหรับ Windows 1251

จะทำอย่างไรถ้าการเข้ารหัสบรรทัดคำสั่งหายไป?

บางครั้งคุณอาจพบสถานการณ์ที่บรรทัดคำสั่งแสดงแทนภาษารัสเซีย สัญลักษณ์แปลก ๆ- ซึ่งหมายความว่ามีปัญหาการเข้ารหัสคำสั่ง สตริงของ Windows 7. ทำไมต้อง 7? เนื่องจากตั้งแต่เวอร์ชัน 8 เป็นต้นไป จะใช้ UTF-8 และในเวอร์ชัน 7 จะใช้ Windows 1251 ด้วย
คำสั่ง chcp 866 สามารถช่วยแก้ไขปัญหาได้ในคราวเดียว เซสชันปัจจุบันจะทำงานได้อย่างถูกต้อง แต่หากต้องการแก้ไขข้อผิดพลาดอย่างรุนแรงคุณจะต้องมีรีจิสทรี


ขอให้มีวันที่ดี!

ดังที่ทราบกันดีว่า วินโดวส์ 10รองรับการติดตั้งชุดภาษาซึ่งสามารถใช้เพื่อเปลี่ยนการแปลอินเทอร์เฟซระบบปฏิบัติการ แนวคิดของภาษาระบบมีความเกี่ยวข้องอย่างใกล้ชิดกับสิ่งนี้ ภาษาของระบบไม่ใช่ภาษาที่เพิ่มเข้ามาโดยใช้ ชุดภาษาแต่อันที่ถูกเลือกตอนติดตั้งระบบเอง หากคุณกำลังทำงานกับคอมพิวเตอร์ของบริษัทซึ่งภาษาถูกเปลี่ยนโดยการติดตั้ง มุ้ย -แพ็คเกจ คุณอาจต้องการทราบว่าเดิมใช้ภาษาใดในระบบ

มีหลายวิธีในการกำหนดภาษาของระบบ

มาดูกันตามลำดับ

การใช้ยูทิลิตี้คอนโซล DISM

ทำงานในฐานะผู้ดูแลระบบ บรรทัดคำสั่งและรันคำสั่ง dism /online /get-intl ในนั้น ภายในไม่กี่วินาทีคุณจะได้รับผลลัพธ์

ให้ความสนใจกับพารามิเตอร์ "ภาษา ส่วนต่อประสานกับผู้ใช้ค่าเริ่มต้น" - ความหมายของมันจะเป็นภาษาของระบบ

การใช้คอนโซล PowerShell

เรียกใช้คอนโซลในฐานะผู้ดูแลระบบและรันคำสั่ง ::ติดตั้งICulture .

ค่าพารามิเตอร์ ชื่อที่แสดงจะชี้ไปที่ภาษาของระบบ โปรดใส่ใจกับพารามิเตอร์ด้วย แอลซีดีมันมีรหัสภาษาที่เขียนอยู่ รีจิสทรีของ Windows(ดูด้านล่าง)

การใช้ตัวแก้ไขรีจิสทรีและตารางถอดรหัส

ทีม ลงทะเบียนใหม่เปิดตัวแก้ไขรีจิสทรีและขยายสาขา

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\ภาษา

ในคอลัมน์ด้านขวาของหน้าต่างตัวแก้ไข ให้ค้นหาพารามิเตอร์สตริง (เขาอยู่ด้านล่างสุด)และเห็นความหมายของมัน

จะแสดงด้วยรหัสสี่หลักเพื่อถอดรหัสสิ่งที่คุณควรใช้ตารางถอดรหัสบนเว็บไซต์ MSDN- ในตัวอย่างของเรารหัส 0419 สอดคล้องกับภาษารัสเซีย

หนึ่งใน ปัญหาที่เป็นไปได้ที่คุณอาจจะเจอภายหลัง การติดตั้งวินโดวส์ 10 - krakozyabry แทนที่จะเป็นตัวอักษรรัสเซียในส่วนต่อประสานโปรแกรมรวมถึงในเอกสาร บ่อยขึ้น การแสดงผลไม่ถูกต้องพบอักษรซีริลลิกในภาษาอังกฤษดั้งเดิมและไม่ใช่เวอร์ชันที่ได้รับอนุญาตทั้งหมดของระบบ แต่มีข้อยกเว้นอยู่

คำแนะนำนี้จะบอกวิธีแก้ไข "krakozyabry" (หรืออักษรอียิปต์โบราณ) หรืออย่างแม่นยำยิ่งขึ้นคือการแสดงตัวอักษรซีริลลิกใน Windows 10 หลายวิธี นอกจากนี้ยังอาจเป็นประโยชน์: (สำหรับระบบในภาษาอังกฤษและภาษาอื่นๆ)

โค้ดเพจคือตารางที่มีการแมปไบต์บางไบต์กับอักขระบางตัว และการแสดงตัวอักษรซีริลลิกเป็นอักษรอียิปต์โบราณใน Windows 10 มักเกิดจากการที่โค้ดเพจผิดถูกตั้งค่าตามค่าเริ่มต้น และสามารถแก้ไขได้หลายวิธี จะมีประโยชน์ได้เมื่อจำเป็น ไม่ต้องเปลี่ยนภาษาของระบบในการตั้งค่า

การใช้ตัวแก้ไขรีจิสทรี

วิธีแรกคือใช้ Registry Editor ในความคิดของฉัน นี่เป็นวิธีที่อ่อนโยนที่สุดสำหรับระบบ แต่ฉันแนะนำก่อนที่จะเริ่ม คำแนะนำเกี่ยวกับจุดคืนค่าใช้กับวิธีที่ตามมาทั้งหมดในคู่มือนี้


โดยปกติแล้ว วิธีนี้จะช่วยแก้ไขปัญหาเกี่ยวกับการแสดงตัวอักษรภาษารัสเซีย รูปแบบของวิธีการโดยใช้ตัวแก้ไขรีจิสทรี (แต่ดีกว่า) คือการดูค่าปัจจุบันของพารามิเตอร์ ACP (ปกติคือ 1252 สำหรับระบบภาษาอังกฤษโดยกำเนิด) จากนั้นในส่วนรีจิสทรีเดียวกันให้ค้นหาพารามิเตอร์ชื่อ 1252 และเปลี่ยน มูลค่าจาก c_1252.nlsบน c_1251.nls.

โดยการแทนที่ไฟล์โค้ดเพจด้วย c_1251.nls

วิธีที่สองฉันไม่แนะนำ แต่บางครั้งก็เลือกโดยผู้ที่เชื่อว่าการแก้ไขรีจิสทรีนั้นยากหรืออันตรายเกินไป: แทนที่ไฟล์โค้ดเพจใน ค:\Windows\System32(สันนิษฐานว่าคุณได้ตั้งค่าโค้ดเพจของยุโรปตะวันตกเป็น 1252 ซึ่งโดยปกติจะเป็นกรณีนี้ คุณสามารถดูโค้ดเพจปัจจุบันได้ในพารามิเตอร์ ACP ในรีจิสทรี ตามที่อธิบายไว้ในวิธีการก่อนหน้านี้)

หลังจาก รีบูท Windows 10 ตัวอักษรซีริลลิกจะต้องแสดงไม่ใช่อักษรอียิปต์โบราณ แต่เป็นตัวอักษรรัสเซียธรรมดา

บอกเพื่อน