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
, dimanaXXXX
diisi dengan code point dalam encoding 16-bit.message = "\uC548\uB155\uD558\uC138\uC694"
print(message)
# output β μλ νμΈμ- Code point 16-bit
C548
merepresentasikan karakterμ
- Code point 16-bit
B155
merepresentasikan karakterλ
- Code point 16-bit
D558
merepresentasikan karakterν
- Code point 16-bit
C548
merepresentasikan karakterμΈ
- Code point 16-bit
C694
merepresentasikan 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
, dimanaXXXXXXXX
diisi code point dalam encoding 32-bit.message = "\U0000C548\U0000B155\U0000D558\U0000C138\U0000C694 \U0001F600"
print(message)
# output β μλ νμΈμ π- Code point 32-bit
0000C548
merepresentasikan karakterμ
- Code point 32-bit
0000B155
merepresentasikan karakterλ
- Code point 32-bit
0000D558
merepresentasikan karakterν
- Code point 32-bit
0000C138
merepresentasikan karakterμΈ
- Code point 32-bit
0000C694
merepresentasikan karakterμ
- Code point 32-bit
0001F600
merepresentasikan emojiπ
- Code point 32-bit
Atau menggunakan notasi special character
\N{NAME}
, dimanaNAME
diisi 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 AN
merepresentasikan karakterμ
- Nama karakter Unicode
HANGUL SYLLABLE NYEONG
merepresentasikan karakterλ
- Nama karakter Unicode
GRINNING FACE
merepresentasikan 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