A.18. Python Unicode String
Python mengadopsi aturan standar Unicode dalam pengelolaan karakter pada string. Benefitnya Python mendukung dan mengenali berbagai macam jenis karakter, termasuk diantaranya adalah huruf Arab, Jepang, emoji, symbol, dan banyak jenis karakter lainnya.
Unicode sendiri adalah suatu aturan standar untuk encoding text yang di-maintain oleh Unicode Consortium. Standarisasi ini diciptakan untuk mendukung semua jenis penulisan yang ada di bumi.
Pada chapter ini kita akan membahas tentang bagaimana implementasi Unicode di Python.
A.18.1. Pengenalan Unicode Stringβ
Dalam dunia per-Unicode-an, ada yang disebut dengan code point yaitu suatu angka numerik (bisa desimal maupun hexadecimal) yang merepresentasikan karakter tertentu. Jadi bisa diibaratkan identifier dari suatu karakter. Semua karakter ada code point-nya, termasuk huruf A, B, C, maupun karakter lainnya (angka, tulisan romawi, symbol, dll).
Cara penulisan karakter unicode sendiri bisa dengan langsung menuliskan karakternya, atau bisa juga dengan menuliskan code point dalam notasi tertentu.
Contoh penulisan text dengan langsung menuliskan karakternya:
message = "μλ νμΈμ π"
print(message)
# output β μλ νμΈμ πMenggunakan notasi special character
\uXXXX, dimanaXXXXdiisi dengan code point dalam encoding 16-bit.message = "\uC548\uB155\uD558\uC138\uC694"
print(message)
# output β μλ νμΈμ- Code point 16-bit
C548merepresentasikan karakterμ - Code point 16-bit
B155merepresentasikan karakterλ - Code point 16-bit
D558merepresentasikan karakterν - Code point 16-bit
C548merepresentasikan karakterμΈ - Code point 16-bit
C694merepresentasikan karakterμ
Untuk memunculkan emoji menggunakan kode encoding 16-bit butuh tambahan effort karena code point emoji tidak cukup jika direpresentasikan oleh code point yang lebarnya hanya 16-bit.
- Code point 16-bit
Menggunakan notasi special character
\UXXXXXXXX, dimanaXXXXXXXXdiisi code point dalam encoding 32-bit.message = "\U0000C548\U0000B155\U0000D558\U0000C138\U0000C694 \U0001F600"
print(message)
# output β μλ νμΈμ π- Code point 32-bit
0000C548merepresentasikan karakterμ - Code point 32-bit
0000B155merepresentasikan karakterλ - Code point 32-bit
0000D558merepresentasikan karakterν - Code point 32-bit
0000C138merepresentasikan karakterμΈ - Code point 32-bit
0000C694merepresentasikan karakterμ - Code point 32-bit
0001F600merepresentasikan emojiπ
- Code point 32-bit
Atau menggunakan notasi special character
\N{NAME}, dimanaNAMEdiisi dengan nama karakter unicode dalam huruf besar.message = "\N{HANGUL SYLLABLE AN}\N{HANGUL SYLLABLE NYEONG} \N{GRINNING FACE}"
print(message)
# output β μλ π- Nama karakter Unicode
HANGUL SYLLABLE ANmerepresentasikan karakterμ - Nama karakter Unicode
HANGUL SYLLABLE NYEONGmerepresentasikan karakterλ - Nama karakter Unicode
GRINNING FACEmerepresentasikan emojiπ
- Nama karakter Unicode
Salah satu website yang berguna untuk mencari informasi nama dan code point karakter Unicode: https://www.compart.com/en/unicode/
A.18.2. Fungsi utilitas pada Unicodeβ
β Fungsi ord()β
Fungsi ord() digunakan untuk mengambil nilai code point dari suatu karakter. Nilai baliknya adalah numerik berbasis desimal.
text = "N"
codePoint = ord(text)
print(f'code point of {text} in decimal: {codePoint}')
# output β code point of N in decimal: 78
text = "μ"
codePoint = ord(text)
print(f'code point of {text} in decimal: {codePoint}')
# output β code point of μ in decimal: 50504
Untuk menampilkan code point dalam notasi heksadesimal, cukup bungkus menggunakan fungsi hex().
text = "μ"
codePoint = ord(text)
print(f'code point of {text} in decimal: {codePoint}')
# output β code point of μ in decimal: 50504
print(f'code point of {text} in hex: {hex(codePoint)}')
# output β code point of μ in hex: 0xc548
Bisa dilihat dari program di atas, unicode code point dari karakter μ dalam bentuk heksadesimal adalah c548. Jika dicek pada praktek sebelumnya, kode heksadesimal yang sama kita gunakan juga dalam penulisan karakter unicode menggunakan notasi \uXXXX (yaitu \uc548).
β Fungsi chr()β
Fungsi chr() adalah kebalikan dari fungsi ord(), kegunaannya adalah untuk menampilkan string sesuai code point.
Pada contoh dibawah ini fungsi chr() digunakan untuk memunculkan karakter dengan code point desimal 50504 dan juga heksadesimal C548, yang keduanya adalah merepresentasikan karakter yang sama, yaitu μ.
codePoint = chr(50504)
print(codePoint)
# output β μ
codePoint = chr(0xC548)
print(codePoint)
# output β μ
Catatan chapter πβ
β Source code praktikβ
github.com/novalagung/dasarpemrogramanpython-example/../unicode