ASCII and Unicode

Grassroot Engineer
3 min readFeb 8, 2020

--

https://logos-download.com/32734-unicode-logo-download.html

ปกติ computer จะมีการเก็บตัวอักษรต่างๆด้วยวิธีการแปลงตัวอักษรที่เราพิมพ์ไปเป็นตัวเลขนะคับ ซึ่งเลขนั้นก็คือ รหัส ASCII โดยเรามีวิธีการตรวจสอบได้ด้วย ord() และเรายังสามารถคำนวณย้อนหลังได้ โดยใช้ chr() คือ

>>> print("A")
A
>>> print(ord("A"))
65 # 65 คือ ASCII ของ A

>>> print("ก")

>>> print(ord("ก"))
3585 # 3585 คือ ASCII ของ ก
#=========================================================
>>> print(chr(65)) # เป็นการคำนวณย้อนหลังว่า ASCII 65 คือ A
A
>>> print(chr(3585))

ที่นี้มาดูการเขียนโปรแกรมเพื่อ แสดงตาราง ASCII ออกมา

https://jrgraphix.net/r/Unicode/0E00-0E7F สำหรับเข้าไปดู Thai unicode

ต่อมาจะเป็นการแสดงค่า unicode ออกมาบ้างนะคับ

https://jrgraphix.net/r/Unicode/0E00-0E7F

แต่ที่นี้ถ้าเราต้องการจะเปรียบเทียบกับ unicode table ซึ่งจะต้องทำให้เป็นเลขฐาน 16 ก่อนนะคับ โดยเพิ่ม {0:#x} เข้าไปแบบนี้

def unicode_table():
for i in range(ord("ก"), ord("ฮ") + 1):
print("{0} : {0:#x} : {0:c}".format(i))
unicode_table()#================================================================
3585 : 0xe01 : ก
3586 : 0xe02 : ข
3587 : 0xe03 : ฃ
3588 : 0xe04 : ค
3589 : 0xe05 : ฅ
3590 : 0xe06 : ฆ
3591 : 0xe07 : ง
3592 : 0xe08 : จ
3593 : 0xe09 : ฉ
3594 : 0xe0a : ช
3595 : 0xe0b : ซ
3596 : 0xe0c : ฌ
3597 : 0xe0d : ญ
3598 : 0xe0e : ฎ
3599 : 0xe0f : ฏ
3600 : 0xe10 : ฐ
3601 : 0xe11 : ฑ
3602 : 0xe12 : ฒ
3603 : 0xe13 : ณ
3604 : 0xe14 : ด
3605 : 0xe15 : ต
3606 : 0xe16 : ถ
3607 : 0xe17 : ท
3608 : 0xe18 : ธ
3609 : 0xe19 : น
3610 : 0xe1a : บ
3611 : 0xe1b : ป
3612 : 0xe1c : ผ
3613 : 0xe1d : ฝ
3614 : 0xe1e : พ
3615 : 0xe1f : ฟ
3616 : 0xe20 : ภ
3617 : 0xe21 : ม
3618 : 0xe22 : ย
3619 : 0xe23 : ร
3620 : 0xe24 : ฤ
3621 : 0xe25 : ล
3622 : 0xe26 : ฦ
3623 : 0xe27 : ว
3624 : 0xe28 : ศ
3625 : 0xe29 : ษ
3626 : 0xe2a : ส
3627 : 0xe2b : ห
3628 : 0xe2c : ฬ
3629 : 0xe2d : อ
3630 : 0xe2e : ฮ
[Finished in 0.1s]

ซึ่งเมื่อเรานำไปเปรียบเทียบกับในตารางนะคับ จะพบว่าค่าตรงกัน

ซึ่งด้วยวิธีเดียวกันนี่เอง เราสามารถนำ unicode ของภาษาอื่นๆ มาลองใช้ดูก็ได้ เช่น ภาษาลาว

def unicode_table_lao():
for i in range(0xe81, 0xea0): # ไม่ต้องใช้ ord()เพราะไล่จาก unicode เลย
print("{0} : {0:#x} : {0:c}".format(i))
unicode_table_lao()
#============================================================
3713 : 0xe81 : ກ
3714 : 0xe82 : ຂ
3715 : 0xe83 : ຃
3716 : 0xe84 : ຄ
3717 : 0xe85 : ຅
3718 : 0xe86 : ຆ
3719 : 0xe87 : ງ
3720 : 0xe88 : ຈ
3721 : 0xe89 : ຉ
3722 : 0xe8a : ຊ
3723 : 0xe8b : ຋
3724 : 0xe8c : ຌ
3725 : 0xe8d : ຍ
3726 : 0xe8e : ຎ
3727 : 0xe8f : ຏ
3728 : 0xe90 : ຐ
3729 : 0xe91 : ຑ
3730 : 0xe92 : ຒ
3731 : 0xe93 : ຓ
3732 : 0xe94 : ດ
3733 : 0xe95 : ຕ
3734 : 0xe96 : ຖ
3735 : 0xe97 : ທ
3736 : 0xe98 : ຘ
3737 : 0xe99 : ນ
3738 : 0xe9a : ບ
3739 : 0xe9b : ປ
3740 : 0xe9c : ຜ
3741 : 0xe9d : ຝ
3742 : 0xe9e : ພ
3743 : 0xe9f : ຟ
[Finished in 0.1s]

จบล่ะ พบกันตอนถัดไปครับ

--

--

Grassroot Engineer
Grassroot Engineer

Written by Grassroot Engineer

ATM engineer who is interested in CODING and believe in EFFORT. — https://grassrootengineer.com

No responses yet