การเข้ารหัสอักขระคืออะไรเช่น ANSI และ Unicode และแตกต่างกันอย่างไร
ASCII, UTF-8, ISO-8859 …คุณอาจเคยเห็นเหล่านักแสดงประหลาดที่ลอยอยู่รอบ ๆ แต่พวกเขาหมายถึงอะไรจริง ๆ ? อ่านต่อในขณะที่เราอธิบายว่าการเข้ารหัสตัวอักษรคืออะไรและตัวย่อเหล่านี้เกี่ยวข้องกับข้อความธรรมดาที่เราเห็นบนหน้าจออย่างไร.
หน่วยการสร้างพื้นฐาน
เมื่อเราพูดถึงภาษาที่เขียนเราจะพูดถึงตัวอักษรซึ่งเป็นส่วนสำคัญของคำซึ่งจะสร้างประโยคย่อหน้าและอื่น ๆ ตัวอักษรเป็นสัญลักษณ์ที่ใช้แทนเสียง เมื่อคุณพูดถึงภาษาคุณกำลังพูดถึงกลุ่มของเสียงที่มารวมกันเพื่อสร้างความหมายบางอย่าง ระบบภาษาแต่ละระบบมีชุดของกฎและคำจำกัดความที่ซับซ้อนซึ่งควบคุมความหมายเหล่านั้น หากคุณมีคำศัพท์มันไร้ประโยชน์ถ้าคุณไม่ทราบว่าเป็นภาษาอะไรและคุณใช้กับผู้อื่นที่พูดภาษานั้น.
(การเปรียบเทียบสคริปต์ Grantha, Tulu และ Malayalam, ภาพจาก Wikipedia)
ในโลกของคอมพิวเตอร์เราใช้คำว่า "ตัวละคร" ตัวละครเป็นแนวคิดนามธรรมที่กำหนดโดยพารามิเตอร์เฉพาะ แต่เป็นหน่วยพื้นฐานของความหมาย ละติน 'A' ไม่เหมือนกับกรีก 'อัลฟา' หรือ 'alif อาหรับ' เพราะพวกเขามีบริบทที่แตกต่างกัน - พวกเขามาจากภาษาที่แตกต่างกันและมีการออกเสียงที่แตกต่างกันเล็กน้อย - ดังนั้นเราสามารถพูดได้ว่าพวกเขาเป็นตัวละครที่แตกต่างกัน การแสดงภาพของตัวละครเรียกว่า "glyph" และ glyphs ที่แตกต่างกันเรียกว่าแบบอักษร กลุ่มของตัวละครอยู่ใน "ชุด" หรือ "ละคร"
เมื่อคุณพิมพ์ย่อหน้าและเปลี่ยนแบบอักษรคุณจะไม่เปลี่ยนค่าการออกเสียงของตัวอักษร มันเป็นแค่เครื่องสำอาง (แต่ไม่สำคัญ) บางภาษาเช่นอียิปต์โบราณและจีนมีอุดมการณ์ สิ่งเหล่านี้เป็นตัวแทนของความคิดทั้งหมดแทนที่จะเป็นเสียงและการออกเสียงอาจแตกต่างกันไปตามกาลเวลาและระยะทาง หากคุณแทนที่ตัวละครหนึ่งเป็นอีกตัวหนึ่งคุณจะต้องแทนที่ความคิด มันเป็นอะไรที่มากกว่าแค่การเปลี่ยนตัวอักษร แต่มันเป็นการเปลี่ยนภาพในอุดมคติ.
การเข้ารหัสอักขระ
(ภาพจาก Wikipedia)
เมื่อคุณพิมพ์บางอย่างบนแป้นพิมพ์หรือโหลดไฟล์คอมพิวเตอร์จะรู้ได้อย่างไรว่าจะแสดงผลอย่างไร นั่นคือสิ่งที่การเข้ารหัสตัวอักษรมีไว้สำหรับ ข้อความในคอมพิวเตอร์ของคุณไม่ใช่ตัวอักษรจริงๆมันเป็นชุดของค่าตัวอักษรและตัวเลขที่จับคู่ การเข้ารหัสอักขระทำหน้าที่เป็นกุญแจสำคัญที่ค่าสอดคล้องกับตัวละครซึ่งคล้ายกับการสะกดการันต์ที่กำหนดเสียงที่สอดคล้องกับตัวอักษรใด รหัสมอร์สเป็นประเภทของการเข้ารหัสตัวอักษร มันอธิบายว่ากลุ่มของหน่วยยาวและสั้นเช่นเสียงบี๊บเป็นตัวแทนของตัวละครได้อย่างไร ในรหัสมอร์สตัวละครเป็นเพียงตัวอักษรภาษาอังกฤษตัวเลขและจุดหยุดเต็มรูปแบบ มีการเข้ารหัสอักขระคอมพิวเตอร์จำนวนมากซึ่งแปลเป็นตัวอักษรตัวเลขเครื่องหมายเน้นเสียงเครื่องหมายวรรคตอนสัญลักษณ์ระหว่างประเทศและอื่น ๆ.
บ่อยครั้งที่หัวข้อนี้มีการใช้คำว่า "หน้ารหัส" พวกมันคือการเข้ารหัสตัวอักษรที่ใช้โดย บริษัท ที่เฉพาะเจาะจงมักจะมีการปรับเปลี่ยนเล็กน้อย ตัวอย่างเช่นหน้ารหัส Windows 1252 (ก่อนหน้านี้รู้จักกันในชื่อ ANSI 1252) เป็นรูปแบบที่แก้ไขของ ISO-8859-1 พวกเขาส่วนใหญ่จะใช้เป็นระบบภายในเพื่ออ้างถึงการเข้ารหัสอักขระมาตรฐานและดัดแปลงที่เฉพาะเจาะจงกับระบบเดียวกัน แต่เนิ่นๆการเข้ารหัสตัวอักษรไม่สำคัญนักเพราะคอมพิวเตอร์ไม่ได้สื่อสารกัน ด้วยอินเทอร์เน็ตที่มีความโดดเด่นและการเชื่อมต่อเครือข่ายเป็นเหตุการณ์ที่เกิดขึ้นทั่วไปมันได้กลายเป็นสิ่งสำคัญมากขึ้นในชีวิตประจำวันของเราโดยที่เราไม่รู้ตัว.
หลายประเภท
(ภาพจาก sarah sosiak)
มีการเข้ารหัสอักขระที่แตกต่างกันมากมายและมีเหตุผลมากมายสำหรับสิ่งนั้น การเข้ารหัสอักขระที่คุณเลือกใช้ขึ้นอยู่กับความต้องการของคุณ หากคุณสื่อสารเป็นภาษารัสเซียคุณควรใช้การเข้ารหัสอักขระที่รองรับ Cyrillic อย่างดี หากคุณสื่อสารด้วยภาษาเกาหลีคุณจะต้องการบางสิ่งที่แสดงถึงฮันกึลและฮันจาอย่างดี หากคุณเป็นนักคณิตศาสตร์คุณก็ต้องการสิ่งที่มีสัญลักษณ์ทางวิทยาศาสตร์และคณิตศาสตร์ทั้งหมดแสดงได้ดีรวมถึงร่ายมนตร์ภาษากรีกและละติน หากคุณเป็นคนพิเรนทร์บางทีคุณอาจได้รับประโยชน์จากข้อความกลับหัวกลับหาง และถ้าคุณต้องการให้บุคคลประเภทใดก็ตามสามารถดูเอกสารเหล่านั้นได้คุณต้องการการเข้ารหัสที่ค่อนข้างธรรมดาและเข้าถึงได้ง่าย.
ลองมาดูตัวอย่างที่พบบ่อย.
(ข้อความที่ตัดตอนมาจากตาราง ASCII, รูปภาพจาก asciitable.com)
- ASCII - รหัสมาตรฐานอเมริกันสำหรับการแลกเปลี่ยนข้อมูลเป็นหนึ่งในการเข้ารหัสอักขระที่เก่ากว่า เดิมได้รับการคิดค้นขึ้นโดยใช้รหัสโทรเลขและมีวิวัฒนาการเมื่อเวลาผ่านไปเพื่อรวมสัญลักษณ์เพิ่มเติมและอักขระควบคุมที่ไม่ได้พิมพ์ออกมาแล้วบางตอน มันอาจเป็นพื้นฐานที่คุณจะได้รับในแง่ของระบบที่ทันสมัยเนื่องจากมันถูก จำกัด ไว้ที่ตัวอักษรละตินโดยไม่มีตัวอักษรที่เน้นเสียง การเข้ารหัส 7 บิตช่วยให้มีเพียง 128 ตัวอักษรซึ่งเป็นเหตุผลว่าทำไมมีการใช้งานหลายรูปแบบที่ไม่เป็นทางการทั่วโลก.
- ISO-8859 - องค์กรการเข้ารหัสอักขระที่ใช้กันอย่างแพร่หลายที่สุดของมาตรฐานสากลคือหมายเลข 8859 การเข้ารหัสเฉพาะแต่ละรายการจะถูกกำหนดโดยตัวเลขซึ่งมักจะนำหน้าด้วยชื่อเล่นที่เป็นคำอธิบายเช่น ISO-8859-3 (ละติน -3), ISO-8859-6 (ละติน / อาหรับ) มันเป็นชุดของ ASCII ซึ่งหมายความว่า 128 ค่าแรกในการเข้ารหัสเหมือนกับ ASCII อย่างไรก็ตามมันมีขนาด 8 บิตและสามารถรองรับได้ 256 ตัวอักษรดังนั้นจึงสามารถสร้างได้จากที่นั่นและรวมตัวอักขระที่กว้างขึ้นด้วยการเข้ารหัสเฉพาะแต่ละชุดโดยมุ่งเน้นไปที่เกณฑ์ที่แตกต่างกัน Latin-1 ประกอบด้วยตัวอักษรและสัญลักษณ์ที่เน้นเสียงจำนวนมาก แต่ต่อมาถูกแทนที่ด้วยชุดแก้ไขที่เรียกว่า Latin-9 ซึ่งรวมถึง glyphs ที่อัปเดตเช่นสัญลักษณ์ยูโร.
(ข้อความที่ตัดตอนมาจากตัวอักษรทิเบต Unicode v4 จาก unicode.org)
- Unicode - มาตรฐานการเข้ารหัสนี้มีจุดมุ่งหมายเพื่อความเป็นสากล ปัจจุบันมี 93 สคริปต์ที่จัดระเบียบในบล็อกหลายบล็อกและอีกหลายงาน Unicode ทำงานแตกต่างจากชุดอักขระอื่น ๆ แทนที่จะใช้การเข้ารหัสแบบ glyph โดยตรงแต่ละค่าจะถูกส่งต่อไปที่ "code point" ค่าเหล่านี้คือค่าเลขฐานสิบหกที่สอดคล้องกับอักขระ แต่ glyphs เองมีวิธีแยกออกจากกัน เช่นเว็บเบราว์เซอร์ของคุณ จุดรหัสเหล่านี้มักจะอธิบายได้ดังนี้: U + 0040 (ซึ่งแปลเป็น '@') การเข้ารหัสเฉพาะภายใต้มาตรฐาน Unicode คือ UTF-8 และ UTF-16 UTF-8 พยายามอนุญาตให้ใช้งานร่วมกันได้สูงสุดกับ ASCII เป็น 8 บิต แต่อนุญาตให้ใช้อักขระทั้งหมดผ่านกลไกการแทนที่และค่าหลายคู่ต่ออักขระ UTF-16 สามารถใช้งานร่วมกับ ASCII ได้อย่างสมบูรณ์แบบเพื่อความเข้ากันได้กับมาตรฐาน 16 บิตที่สมบูรณ์ยิ่งขึ้น.
- ISO-10646 - นี่ไม่ใช่การเข้ารหัสที่แท้จริงเพียงชุดอักขระของ Unicode ที่ได้รับมาตรฐานจาก ISO ส่วนใหญ่มีความสำคัญเนื่องจากเป็นอักขระที่ใช้โดย HTML ฟังก์ชั่นขั้นสูงบางอย่างที่ Unicode จัดไว้ให้ซึ่งช่วยให้การเรียงหน้าและจากขวาไปซ้ายควบคู่ไปกับการเขียนสคริปต์จากซ้ายไปขวานั้นหายไป ถึงกระนั้นมันก็ใช้งานได้ดีมากสำหรับการใช้งานบนอินเทอร์เน็ตเพราะมันช่วยให้สามารถใช้งานสคริปต์ได้หลากหลายและอนุญาตให้เบราว์เซอร์ตีความร่ายมนตร์ได้ ทำให้การแปลเป็นภาษาท้องถิ่นได้ง่ายขึ้น.
ฉันควรใช้การเข้ารหัสแบบใด?
ASCII นั้นใช้ได้กับผู้พูดภาษาอังกฤษส่วนใหญ่ แต่ก็ไม่ได้มีอะไรมากมาย บ่อยครั้งที่คุณจะเห็น ISO-8859-1 ซึ่งใช้ได้กับภาษายุโรปตะวันตกส่วนใหญ่ ISO-8859 รุ่นอื่นนั้นใช้งานได้กับสคริปต์ Cyrillic, Arabic, Greek หรือสคริปต์อื่น ๆ อย่างไรก็ตามหากคุณต้องการแสดงหลายสคริปต์ในเอกสารเดียวกันหรือบนหน้าเว็บเดียวกัน UTF-8 ช่วยให้สามารถใช้งานร่วมกันได้ดีกว่ามาก นอกจากนี้ยังใช้งานได้ดีสำหรับผู้ที่ใช้เครื่องหมายวรรคตอนสัญลักษณ์ทางคณิตศาสตร์หรือตัวละครนอกกรอบเช่นสี่เหลี่ยมและช่องทำเครื่องหมาย.
(หลายภาษาในเอกสารเดียวสกรีนช็อตของ gujaratsamachar.com)
อย่างไรก็ตามมีข้อเสียสำหรับแต่ละชุดอย่างไรก็ตาม ASCII นั้นถูก จำกัด ด้วยเครื่องหมายวรรคตอนดังนั้นมันจึงทำงานได้ไม่ดีนักสำหรับการแก้ไขที่ถูกต้องตามตัวอักษร เคยพิมพ์คัดลอก / วางจาก Word เพียงเพื่อให้มีการรวมกันของร่ายมนตร์แปลก ๆ ? นั่นคือข้อเสียเปรียบของ ISO-8859 หรือมากกว่านั้นอย่างถูกต้องความสามารถในการทำงานร่วมกันกับหน้ารหัสเฉพาะระบบปฏิบัติการ (เรากำลังดูคุณ Microsoft!) ข้อเสียเปรียบหลักของ UTF-8 คือการขาดการสนับสนุนที่เหมาะสมในการแก้ไขและเผยแพร่แอปพลิเคชัน ปัญหาอีกประการคือเบราว์เซอร์มักจะไม่ตีความและเพียงแสดงเครื่องหมายลำดับไบต์ของอักขระที่เข้ารหัส UTF-8 ซึ่งส่งผลให้มีสัญลักษณ์ที่ไม่พึงประสงค์ปรากฏขึ้น และแน่นอนว่าการประกาศการเข้ารหัสหนึ่งตัวและการใช้อักขระจากที่อื่นโดยไม่ต้องประกาศ / อ้างอิงพวกเขาอย่างถูกต้องบนหน้าเว็บทำให้เบราว์เซอร์สามารถแสดงผลได้อย่างถูกต้องและทำให้เครื่องมือค้นหาจัดทำดัชนีอย่างเหมาะสม.
สำหรับเอกสารต้นฉบับของคุณเองและอื่น ๆ คุณสามารถใช้สิ่งที่คุณต้องการเพื่อให้งานสำเร็จลุล่วง เท่าที่เว็บไปดูเหมือนว่าคนส่วนใหญ่เห็นด้วยกับการใช้รุ่น UTF-8 ที่ไม่ได้ใช้เครื่องหมายคำสั่งซื้อไบต์ แต่นั่นไม่ได้เป็นเอกฉันท์ทั้งหมด อย่างที่คุณเห็นการเข้ารหัสอักขระแต่ละตัวมีการใช้บริบทและจุดแข็งและจุดอ่อนของตนเอง ในฐานะผู้ใช้ปลายทางคุณอาจไม่ต้องจัดการกับเรื่องนี้ แต่ตอนนี้คุณสามารถก้าวไปข้างหน้าอีกขั้นหากคุณเลือก.