Unicode pada Javascript
Mungkin para penggiat atau pemula dalam dunia programming, tidak semuannya mengetahui bahwa kita dapat menggunakan emoticon atau penggunaan bahasa cina atau jepang untuk dalam kode program.
Sebelumnya saya sempat membaca artikel pada web https://alligator.io/js/maps-introduction disana mereka menuliskan parameter fungsi dengan menggunakan emoticon.
Sesuatu yang diluar dari kebiasaan menurut saya. Berangkat dari situ pula yang menjadi cikal bakal saya menulis artikel ini.
dan berikut adalah screen shoot dari artikel yang saya maksud tadi.
Mari kita lanjutkan pembahasannya.
Apa Itu Unicode
Unicode adalah sebuah konsep standar penulisan dalam bentuk karakter atau dapat juga berupa simbol dalam bentuk visual.
Pada umumnya komputer akan memproses apa pun perintah yang kita berikan. Kemudian mengelolah perintah tersebut dan memberikan output atau keluaran hasil dari pengolahan perintah tersebut.
Karena itu pemograman javascript secara khusus memberikan aturan dalam penulisannya. Apabila ketentuan tidak di terapkan, maka akan menjadi masalah. Karena browser akan menganggap source code ditulis berdasarkan karakter lokal.
Sebagaimana kita ketahui bersama bahwa programmer tersebar di seluruh penjuru bumi ini dengan berbeda-beda kewanegaraan dan setiap negara memiliki karakter lokal mereka masing-masing seperti cina, jepang, dan arab.
Javascript source code dan unicode
Terdapat dua cara dalam implementasi unicode pada source code javascript yang pertama adalah dengan cara internal dan cara external:
1. Secara Internal
Apabila unicode pada javascript dilakukan secara internal maka javascript akan terlebih dahulu mengkonversi kode pada bagian unit UTF-16.
yang menjadi pertanyaan… apa itu UTF-16?
UTF-16 adalah singkatan dari 16-bit Unicode Transformation Format, dan penggunaannya adalah untuk encoding karakter unicode. UTF-16 juga disebut sebagai Sistem variable length encoding yang berarti setiap code point (kode yang mencerminkan suatu karakter) di-encode menggunakan satu atau dua kali 16-bit (1 code unit = 16 bit).
Mungkin keterangan UTF-16 Secara rinci akan sangat panjang dan saya rasa perlu ditulis dalam artikel yang berbeda.
Bedasarkan Spesifikasi dari Ecma Script 6 bahwa semua string adalah urutan dari UTF-16.
Anda dapat perhatikan contoh kode berikut ini.
Penulisan variable yaitu memiliki indetifier yaitu nama dapat juga di representasikan dengan n\u0061\u006D\u0061 yang mana \u0061 adalah huruf a, dan \u006D adalah huruf m. Untuk referensi tentang karakter UTF-16 dapat kunjungi disini.
Penulisan demikian juga berlaku pada string literal, dan juga regular exopresion literal pada javascript. Dengan format penulisannya \uXXXX. yang mana XXXX merupakan 4 angka Hexadecimal.
Berikut ini adalah contoh untuk menampilkan simbol pilcrow dengan Charset UTF-16
2. Secara External
Jika penulisan javascript dilakukan secara external. Seperti yang sering programmer lakukan saat develop web programming. Maka anda perlu melakukan inisialisai dokumen tersebut agar unicode yang ada dalam source code javascript dapat di terjemahkan oleh browser.
- Apabila file dari fecthing dengan menggunakan HTTP / HTTPS. Maka anda harus menambahkan spesifikasi encode dengan parameter charset UTF-8 pada header content-type.
Content-Type: application/javascript; charset=utf-8
- Jika anda ingin loaded file javascript kedalam dokumen HTML. Maka anda perlu menambahkan atribut charset dengan value UTF-8 pada tag script <script>
<script src="./app.js" charset="utf-8">
- Ataupun anda dapat melakukan loaded file javascript kedalam HTML dengan menambahkan atribut charset dengan value utf-8 pada tag meta <meta>
...
<head>
<meta charset="utf-8">
</head>
<body>
<script src="./app.js">
</body>
...
begitulah 3 point, cara melakukan encode jika source code javascript berada pada external dokumen.
Namun jika anda perhatikan baik-baik bahwa secara external menggunakan UTF-8 bukannya UTF-16.
Lalu mengapa itu bisa terjadi?
Atas pertanyaan diatas, ada dua hal yang akan saya terangkan secara singkat yakni:
yang pertama, segala file yang diawali dengan BOM (byte order mark) harus di lakukan encode ke variant UTF. BOM sendiri adalah reprensentasi dari unicode dengan code point U+FEFF BYTE ORDER MARK atau disingkat dengan BOM. Jadi pada saat page menggunakan karakter tertentu maka setiap karakter harus di encode kedalam BOM terlebih dahulu.
yang kedua, karena standar HTML5 menggunakan UTF-8, namun juga tidak terbatas dengan UTF-8. Kemudian yang hubungan dengan BOM adalah representasi dari byte untuk setiap karakter unicode kemudian UTF adalah transformasi format unicode itu sendiri.
Saya khawatir pembahasan ini akan jauh meluas karena untuk unicode sendiri saya rasa perlu pembahasan dalam beberapa artikel, oleh karena itu saya persingkat saja.
Poinnya adalah standar HTML5 secara default menggunakan BOM UTF-8 untuk merepresentasikan karakter dan symbol dalam browser.
Normalisasi
Penerapan normalisasi yaitu proses menghilangkan perintah ambigu dalam menampilkan sebuah karakter.
Perhatikan kode berikut ini.
const s1 = '\u00E9' //é
const s3 = 'e\u0301' //éconsole.log(s1 !== s3) //true
Atau anda dapat pula menggunakan method normalize() yang di perkenalkan oleh ES6. Dan method ini juga dapat digunakan untuk membandingkan string.
s1.normalize() === s3.normalize() //true
EMOJI
Penggunaan emoji sangat menarik, sesuatu yang diluar dari kebiasaan dalam membuat program. Anda juga dapat menerapkan emoji dalam identifier atau string literal. Seperti screen shot kode diatas yang menggunakan emoji pada string literal.
Meskipun begitu saya tidak pernah menggunakan emoji dalam develop program. heheh….
Dalam penggunaannya anda dapat melakukannya dengan string yaitu dengan cara encode \uXXXX dan XXX adalah bilangan hexadecimal.
Perhatikan kode berikut ini.
Namun emoji juga dapat digabungkang seperti anda membuat emoji 👩❤️👩 maka anda perlu menggabungkan 👩 dan ❤️ dan 👩
Anda dapat perhatikan kode berikut ini.
Untuk kode menampilkan emoji anda dapat kunjungi link berikut ini https://unicode.org/emoji/charts/full-emoji-list.html
Menghitung Karakter
Apabila sebuah string terdiri dari dua unit kode yang di-encoding pada 1 unit tunggal code point. Maka yang dihitung bukanlah emoj/karakter/symbol, melainkan kode unit penyusun karakter tersebut.
Selain itu anda juga dapat melakukan perulangan dari emoj tersebut. seperti contoh kode berikut ini
Begitulah pembahasan tentang unicode pada javascript dan semoga bermafaat.
Sumber:
https://muhammadiqbal.art.blog/2019/09/27/unicode-pada-javascript/