สิ่งที่ทำให้ฉันสับสนมานานคือซอฟต์แวร์จำนวนมากใช้คำว่า "charset" และ "encoding" เป็นคำพ้องความหมาย
เมื่อผู้คนอ้างถึงยูนิโค้ด "เข้ารหัส" พวกเขามักจะหมายถึงชุดกฎสำหรับการแสดงอักขระยูนิโค้ดเป็นลำดับของไบต์ - เช่น ASCII หรือ UTF-8 ดูเหมือนว่าสมเหตุสมผลและเป็นธรรมชาติ แนวคิดคือคุณกำลัง "เข้ารหัส" อักขระเหล่านั้นเป็นไบต์โดยใช้ ruleset ที่ระบุ
เนื่องจากบางครั้ง rulesets เหล่านั้นให้ความสามารถในการ "เข้ารหัส" เซ็ตย่อยบางส่วนของอักขระยูนิโค้ดทั้งหมดคุณอาจจินตนาการว่า "charset" - ย่อมาจาก 'set of characters' - จะหมายถึงชุดของอักขระ Unicode - โดยไม่คำนึงถึงวิธีการ อักขระเหล่านั้นถูกเข้ารหัส การเข้ารหัสจึงหมายถึงชุดอักขระ (การเข้ารหัสเช่น ASCII ซึ่งมีกฎสำหรับการเข้ารหัสอักขระ 128 ตัวเท่านั้นจะเชื่อมโยงกับชุดอักขระของอักขระ 128 ตัว) แต่ชุดอักขระไม่จำเป็นต้องมีการเข้ารหัส (เช่น UTF-8, UTF -16 และ UTF-32 เป็นการเข้ารหัสที่แตกต่างกันทั้งหมด แต่สามารถเข้ารหัสชุดอักขระเดียวกันได้)
กระนั้น - และนี่คือจุดเริ่มต้นของคำถามของฉัน - การใช้คำในโลกแห่งความเป็นจริงของคำว่า "charset" ไม่ตรงกับสิ่งที่การสร้างคำนั้นแปลว่า มันถูกใช้เพื่อหมายถึง "การเข้ารหัส" เกือบตลอดเวลา
ตัวอย่างเช่น:
charset
แอตทริบิวต์ใน HTML ถูกใช้เพื่อระบุการเข้ารหัสCharset
s ใน Java เป็นการเข้ารหัสcharset
s และcharacter sets
ใน MySQL มีการเข้ารหัสอีกครั้ง
การใช้ภาษานี้แปลกมากเพียงใดและคำจำกัดความที่ต่อต้านการหยั่งรู้ของ 'ชุดอักขระ' นี้มีมานานแค่ไหน? มันไม่อาจจะมาจากช่วงเวลาที่มีอย่างแท้จริงเป็นในทางปฏิบัติการทำแผนที่หนึ่งต่อหนึ่งระหว่างการเข้ารหัสในการใช้งานและชุดของตัวละครที่พวกเขาได้รับการสนับสนุน? หรือมีมาตรฐานหรือสเปคที่มีอิทธิพลโดยเฉพาะซึ่งกำหนดคำจำกัดความของคำนี้หรือไม่?
charset
มาตรฐาน Unicode มาก่อนดังนั้นในขณะที่อาจไม่ได้เป็น "การทำแผนที่แบบหนึ่งต่อหนึ่ง" อักขระที่จำเป็นสำหรับเอกสารมีแนวโน้มที่จะบังคับให้เลือกการเข้ารหัส แต่ฉันไม่มีเวลาค้นคว้าประวัติความเป็นจริงของคำว่า ...