← เครื่องมือทั้งหมด

ตาราง ASCII

ตารางอ้างอิง ASCII ครบถ้วนพร้อมรหัสทศนิยม เลขฐานสิบหก และไบนารี อักขระควบคุมและอักขระที่แสดงได้ และความสัมพันธ์กับ Unicode และ UTF-8
DecHexOctCharชื่อ

ตาราง ASCII: เมื่อตัวเลข 128 ตัวกลายเป็นรากฐานของข้อความ

ASCII ย่อมาจาก American Standard Code for Information Interchange คือการเข้ารหัสที่สอนให้คอมพิวเตอร์ตกลงกันว่าอักษรคืออะไร เผยแพร่ในปี 1963 และปรับปรุงตลอดทศวรรษนั้น มันแมปอักขระข้อความภาษาอังกฤษพื้นฐานทุกตัว ตัวเลข และสัญญาณควบคุมกลุ่มหนึ่งออกมาเป็นตัวเลขที่เครื่องสามารถเก็บและส่งได้ เมื่อคุณกดแป้น A ตัวพิมพ์ใหญ่ คอมพิวเตอร์ไม่ได้เก็บรูปร่าง มันเก็บตัวเลข 65 ASCII คือตารางค้นหาที่ทำให้ตัวเลขนั้นหมายถึง A ไม่ว่าจะส่งไปที่ไหน

มาตรฐานนี้มีขนาดกะทัดรัดอย่างโดดเด่น ASCII เป็นรหัส 7 บิต หมายความว่าแต่ละอักขระพอดีกับเจ็ดหลักเลขฐานสอง และทั้งหมดครอบคลุมพอดี 2 ยกกำลัง 7 หรือ 128 จุดรหัสที่แตกต่างกันซึ่งมีหมายเลข 0 ถึง 127 ความประหยัดนั้นตั้งใจทำ เครื่องพิมพ์เทเลไทป์และโมเดมในยุคแรกช้าและมีราคาแพง ดังนั้นทุกบิตจึงมีค่า เจ็ดบิตเพียงพอที่จะครอบคลุมตัวพิมพ์ใหญ่และพิมพ์เล็กของอักษรละติน ตัวเลขสิบตัว เครื่องหมายวรรคตอนทั่วไป และอักขระสัญญาณที่คอยซิงค์อุปกรณ์ โดยมีบิตหนึ่งบิตเหลือไว้ที่หลายระบบใช้เพื่อตรวจสอบข้อผิดพลาด

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

สองครึ่ง: อักขระควบคุมและอักขระพิมพ์ได้

ตารางแบ่งออกเป็นสองส่วนอย่างชัดเจน รหัส 0 ถึง 31 รวมถึงรหัส 127 (DEL) คืออักขระควบคุม สิ่งเหล่านี้ไม่ได้พิมพ์อักขระบนหน้าจอ แต่สั่งให้อุปกรณ์ทำบางอย่าง รหัส 9 คือ horizontal tab รหัส 10 คือ line feed ที่ขึ้นบรรทัดใหม่ รหัส 13 คือ carriage return และรหัส 7 คือ bell ที่เคยทำให้เทอร์มินัลดังเสียง รหัสสัญญาณทั้งหมด 33 รหัสมีอยู่ และแม้ว่าหลายอย่างจะกลายเป็นเรื่องในอดีตแล้ว แต่ line feed, carriage return และ tab ยังคงจำเป็นสำหรับการจัดรูปแบบไฟล์ข้อความในปัจจุบัน

รหัส 32 ถึง 126 คืออักขระพิมพ์ได้ มีทั้งหมด 95 ตัว รหัส 32 คือช่องว่าง ซึ่งนับเป็นพิมพ์ได้เพราะมันเลื่อน cursor ไปข้างหน้าแม้ว่าจะไม่แสดงอะไร จากนั้นมีเครื่องหมายวรรคตอนและสัญลักษณ์ ตัวเลข 0 ถึง 9 ที่รหัส 48 ถึง 57 ตัวพิมพ์ใหญ่ A ถึง Z ที่ 65 ถึง 90 และตัวพิมพ์เล็ก a ถึง z ที่ 97 ถึง 122 คุณสมบัติที่น่าสนใจมาจากรูปแบบนี้คือตัวพิมพ์เล็กและพิมพ์ใหญ่ของตัวอักษรเดียวกันต่างกันพอดี 32 ซึ่งเป็นเหตุที่การพลิกบิตเดียวสามารถแปลงตัวพิมพ์ได้ รูปแบบที่เป็นระเบียบเหล่านี้ไม่ใช่เรื่องบังเอิญ แต่ถูกออกแบบมาเพื่อให้การเรียงลำดับและการแปลงตัวพิมพ์ทำได้ด้วยการคำนวณทางคณิตศาสตร์ง่าย ๆ

ทศนิยม เลขฐานสิบหก และเลขฐานสอง: สามมุมมองของตัวเลขหนึ่งตัว

รหัส ASCII ทุกตัวเป็นแค่ตัวเลข และคุณจะเห็นมันในสามรูปแบบ ทศนิยมเป็นรูปแบบฐาน 10 ในชีวิตประจำวัน ดังนั้น A คือ 65 เลขฐานสิบหก ฐาน 16 เป็นรูปแบบที่โปรแกรมเมอร์นิยมเพราะสอดคล้องกับ byte: A คือ 0x41 และช่วงที่พิมพ์ได้วิ่งจาก 0x20 ถึง 0x7E เลขฐานสอง ฐาน 2 เป็นรูปแบบที่ฮาร์ดแวร์จัดเก็บจริง ๆ ดังนั้น A คือ 1000001 ใน 7 บิต อักขระเดียวกัน สามระบบสัญลักษณ์ และความคล่องในการแปลงระหว่างกันเป็นทักษะพื้นฐานเมื่อคุณอ่าน memory dump หรือ network traffic ถ้าคุณทำงานกับการแปลงเหล่านี้บ่อย ตารางอ้างอิง บน speedor.net เก็บ mapping ไว้ให้คลิกเดียว

สายของแสงเลขฐานสองและเลขฐานสิบหกไหลเข้าสล็อตอักขระเรืองแสงบนพื้นน้ำเงินเข้ม
เลขฐานสองและเลขฐานสิบหกเป็นเพียงฐานที่ต่างกันในการอธิบาย code point ASCII เดียวกัน

ASCII ยังสำคัญอยู่ที่ไหน

คงเป็นความผิดพลาดถ้าจะจัด ASCII ไว้ในหมวดประวัติศาสตร์ มันมีชีวิตอยู่ในงานประจำวันของทุกคนที่แตะโค้ด ภาษาโปรแกรมมิงจัดการ string literals ไฟล์ต้นฉบับ และคีย์เวิร์ดของโปรโตคอลในระดับ byte ของ ASCII โปรโตคอลเครือข่ายเช่น HTTP headers, SMTP และรูปแบบการตั้งค่าจำนวนมากถูกกำหนดใน ASCII เพื่อให้มนุษย์อ่านได้ เมื่อ string ดูเสียหาย นักพัฒนาจะใช้ hex viewer และอ่าน byte ดิบเทียบกับตาราง ASCII เพื่อหาอักขระควบคุมที่หลุดเข้าไปหรือการขึ้นบรรทัดที่ผิด URL encoding, Base64 และ escape sequences ล้วนสร้างบนค่า ASCII สำหรับผู้ที่ debug บั๊กการเข้ารหัส การอ้างอิงอย่างรวดเร็วถัดจาก developer tools ของคุณช่วยเปลี่ยน byte ที่ลึกลับให้กลายเป็นคำตอบที่ชัดเจน

จาก ASCII สู่ Unicode และ UTF-8

ASCII จัดการภาษาอังกฤษได้อย่างสวยงามและแทบไม่ได้อะไรอื่น เพดาน 128 อักขระไม่สามารถรองรับตัวอักษรที่มีเครื่องหมายกำกับ ซีริลลิก จีน อาหรับ หรืออีโมจิได้ Unicode ตอบสนองด้วยการกำหนดหมายเลขเฉพาะที่เรียกว่า code point ให้กับอักขระทุกตัวในทุกระบบการเขียน ขณะนี้มีมากกว่าหนึ่งแสนตัว สำคัญอย่างยิ่ง Unicode คือแค็ตตาล็อกของอักขระ ไม่ใช่รูปแบบการจัดเก็บ ดังนั้นมันต้องการการเข้ารหัสเพื่อเปลี่ยน code point เหล่านั้นเป็น byte

UTF-8 คือการเข้ารหัสนั้น และเป็นเหตุผลที่ ASCII ไม่เคยหายไปจริง ๆ UTF-8 ใช้หนึ่งถึงสี่ byte ต่ออักขระ และถูกออกแบบมาเพื่อให้ code point 0 ถึง 127 ซึ่งเป็นช่วง ASCII ทั้งหมด ถูกเก็บในหนึ่ง byte ที่เหมือนกับ ASCII ธรรมดา ทำให้ UTF-8 เข้ากันได้อย่างสมบูรณ์แบบย้อนหลัง: ไฟล์ ASCII ที่ถูกต้องทุกไฟล์เป็นไฟล์ UTF-8 ที่ถูกต้องแล้ว อักขระที่สูงกว่า 127 ใช้ byte เพิ่มเติม ความเข้ากันได้ที่ดีนี้คือเหตุผลสำคัญที่ UTF-8 ขับเคลื่อนเว็บส่วนใหญ่ในปัจจุบัน กล่าวสั้น ๆ คือ ASCII คือแกนกลาง 128 อักขระดั้งเดิม Unicode คือแค็ตตาล็อกสากลที่บรรจุมันไว้ และ UTF-8 คือการเข้ารหัสที่ส่งทั้งคู่โดยเก็บข้อความ ASCII ไว้เหมือนเดิมทุก byte

คำถามที่พบบ่อย

ตาราง ASCII มีอักขระกี่ตัว?

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

ความแตกต่างระหว่างอักขระควบคุมและอักขระพิมพ์ได้คืออะไร?

อักขระควบคุม รหัส 0 ถึง 31 รวมถึง 127 สั่งให้อุปกรณ์ทำบางอย่าง เช่น line feed หรือ tab และไม่สร้างอักขระที่มองเห็น อักขระพิมพ์ได้ รหัส 32 ถึง 126 คืออักษร ตัวเลข เครื่องหมายวรรคตอน และช่องว่างที่คุณเห็นจริง ๆ บนหน้าจอ

ทำไม ASCII ถึงเป็นรหัส 7 บิต?

เจ็ดบิตให้ 128 ค่าที่แตกต่างกันพอดี ซึ่งเพียงพอสำหรับตัวอักษรอังกฤษ ตัวเลข เครื่องหมายวรรคตอน และสัญญาณควบคุมขณะประหยัดแบนด์วิดท์บนฮาร์ดแวร์ช้าในยุคแรก บิตที่แปดใน byte มักสงวนไว้สำหรับการตรวจสอบข้อผิดพลาดแบบ parity

รหัส ASCII ของตัวอักษร A คืออะไร?

A ตัวพิมพ์ใหญ่คือทศนิยม 65 เลขฐานสิบหก 0x41 และเลขฐานสอง 1000001 a ตัวพิมพ์เล็กคือทศนิยม 97 ซึ่งสูงกว่าพอดี 32 รูปแบบในตัวนี้ช่วยให้แปลงตัวพิมพ์ได้ด้วยการคำนวณทางคณิตศาสตร์ง่าย ๆ

ASCII เหมือนกับ Unicode ไหม?

ไม่ ASCII ครอบคลุม 128 อักขระ ในขณะที่ Unicode รวบรวมมากกว่าหนึ่งแสนตัวในทุกระบบการเขียน ASCII คือ 128 code point แรกของ Unicode โดยพื้นฐาน จึงเป็นเพียงส่วนย่อยเล็กน้อยของมาตรฐานที่ใหญ่กว่า

UTF-8 เกี่ยวข้องกับ ASCII อย่างไร?

UTF-8 เป็นการเข้ารหัสสำหรับ Unicode ที่เก็บ code point 0 ถึง 127 ใน byte เดียวที่เหมือนกับ ASCII ทำให้ไฟล์ ASCII ทุกไฟล์เป็นไฟล์ UTF-8 ที่ถูกต้อง ซึ่งเป็นเหตุที่ UTF-8 เข้ากันได้ย้อนหลังและครองเว็บสมัยใหม่