Pertemuan 5 Database, Character Set Dan Collation

Unduh sebagai pptx, pdf, atau txt
Unduh sebagai pptx, pdf, atau txt
Anda di halaman 1dari 24

Basis Data Lanjut

Database, Character set dan Collation

Mohammad Saichu Nidom, S.Kom, M.Kom


Program Studi Teknik Informatika
Fakultas Teknik
Universitas Kahuripan Kediri
Pengertian Character set dan Collation

Character set (biasa disingkat sebagai charset) adalah kumpulan karakter yang bisa
dipahami oleh komputer. Sedangkan collation adalah aturan pengurutan data berdasarkan
charset. Charset mengatur bagaimana MySQL menyimpan setiap karakter ke dalam tabel.

tag <meta charset="UTF-8">


Materi tentang charset dan collation ini sebenarnya baru diperlukan jika anda berencana
menyimpan huruf non-latin ke dalam MySQL, seperti karakter jepang, korea, china atau arab.

2
Misalnya untuk huruf A, sinyalnya adalah pendek, pendek, pendek. Untuk huruf B sinyalnya
pendek, pendek, panjang, dst. Dengan kombinasi 3 sinyal untuk setiap huruf, sudah dapat
menampung 2³= 8 karakter. kita anggap sinyal pendek dengan angka 0, dan sinyal panjang
dengan angka 1.
• A: 000
• B: 001
• C: 010
• D: 011
• E: 100
• F: 101
• G: 110
• H: 111
Huruf abjad latin terdiri dari 26 karakter, untuk bisa membuat kode yang bisa menampung seluruh
karakter alphabet, setidaknya harus disimpan ke dalam 5 digit kode, dimana 2⁵= 32. Artinya jika kita
membuat daftar dimana setiap karakter diwakili oleh 5 digit, tersedia ruang untuk 32 jenis karakter.

3
Berikut daftar karakter set-nya:
• A: 00000
• B: 00001
• C: 00010
•…
• Z: 11010
•…
Huruf abjad berjumlah 26 karakter. Jika menggunakan 5 digit masih ada sisa 32 - 26 = 6 karakter lagi.
Ini bisa dipakai untuk karakter khusus seperti titik, koma, tanda seru, tanda tanya, titik dua dan tanda
kutip.Daftar ini pun sudah bisa menjadi sebuah character set yang saya sebut sebagai sandi_32_-
karakter
Namun sandi_32_karakter juga masih belum bisa menampung angka 0 - 9 (karena sudah tidak
muat di 5 digit kode). Kita harus naikkan lagi menjadi 6 digit kode yang sanggup menampung 2⁶=
64 karakter. Ini saya sebut sebagai sandi_64_karakter

4
ASCII Character Set

Pada tahun 1960an, badan standarisasi Amerika Serikat, yakni American Standards
Association (ASA) atau sekarang berubah nama menjadi ANSI (American National Standards
Institute) mulai merancang character set baru sebagai pengganti sandi morse. Character set ini
diberi nama ASCII dan dirilis pada tahun 1963. ASCII sendiri merupakan singkatan dari
American Standard Code for Information Interchange.

ASCII adalah character set 7 bit, yang artinya setiap karakter di dalam ASCII butuh 7 digit angka
biner. Sebagai contoh, huruf ‘A’ dalam character ASCII memiliki kode biner 1000001. Dengan 7
bit, total karakter yang bisa ditampung sebanyak 2⁷= 128.

5
Prinsip kerja character set ASCII

32 karakter awal dengan kode biner 0000000 - 0011111 berisi karakter “control”, yang dikenal dengan
istilah ASCII control characters. Karakter khusus ini bukan untuk ditampilkan tapi mengontrol
bagaimana alur teks disusun, contohnya “line feed” sebagai penanda baris baru dan karakter “tab”.

96 karakter berikutnya dengan kode biner 00100000 - 0011111 adalah karakter yang bisa terlihat, dikenal
sebagai ASCII printable characters. Bagian ini terdiri dari seluruh huruf alphabet (A-Z dan a-z), angka (0 - 9),
serta berbagai karakter penanda seperti $, +, = dan &. Hampir seluruh karakter ini ada di keyboard komputer
yang kita gunakan sekarang.

Perhatikan rangkaian kode biner berikut:

01001101011001010111001001100100011001010110000100100001

= 1001101 1100101 1110010 1100100 1100101 1101011 1100001 0100001

6
Tabel ASCII

7
Extended-ASCII Character Set

128 character set yang terdapat di dalam ASCII sebenarnya sudah mencukupi untuk kebutuhan
negara yang menggunakan aksara latin seperti Amerika Serikat. Bahkan pada prakteknya tidak
semua perangkat menggunakan ke-128 karakter ASCII standar. Kadang ada yang hanya 95
dan
ada juga yang hanya 64 karakter.

Keterbatasan karakter yang ada diakali dengan cara yang unik. Karakter ASCII tidak memiliki
tanda “÷” sehingga mayoritas bahasa pemrograman menggantinya dengan tanda “/” untuk
operator pembagian.

Masalah mulai muncul ketika ASCII digunakan pada negara yang butuh karakter non
latin, seperti China, Korea, Jepang atau Arab.

8
Ketika perkembangan komputer mulai beralih ke 8-bit (1 byte), terdapat peluang untuk mengembangkan
character set ASCII. Dengan 8 digit biner akan sanggup menampung 2⁸= 256 karakter. Artinya terdapat
ruang untuk 128 karakter baru.

Character ASCII dengan 8 bit ini dikenal dengan sebutan Extended-ASCII Character Set 2. Urutan 1 -
128 tetap ditempati karakter ASCII lama, dan karakter baru akan menempati urutan 129 - 256.
Disinilah awal kemunculan bermacam-macam character set, karena tentu saja setiap Negara butuh
karakter sendiri-sendiri. Untuk komputer di Jepang, mereka butuh menginput aksara jepang.

Agar bisa mengakomodasi kebutuhan ini, ISO (International Organization for Standardization)
selaku pembuat standar teknologi menetapkan 16 jenis Extended-ASCII character set,
• Latin-1 Western European • Latin-5 Turkish
• Latin-2 Central European • Latin-6 Nordic
• Latin-3 South European • Latin/Thai
• Latin-4 North European • Latin/Devanagari
• Latin/Cyrillic • Latin-7 Baltic Rim
• Latin/Arabic • Latin-8 Celtic
• Latin/Greek • Latin-9
• Latin/Hebrew • Latin-10 South-Eastern European 9
Nama dari setiap character set bersesuaian dengan tujuannya. Character set Latin/Arabic
ditujukan untuk aksara arab. Sedangkan Latin-5 Turkish dibuat untuk aksara turki.

Character set latin-1 Western European sebenarnya ditujukan untuk aksara eropa barat. Nomor
urut 129 - 256 berisi berbagai karakter dialek seperti huruf â, å, í, î, ú, õ, juga termasuk karakter
matematis seperti ‰, ±, dan µ.

Selain character set diatas, juga muncul berbagai character set non-standar. IBM membuat
EBCDIC yang digunakan pada perangkat buatannya, Microsoft membuat Windows-1252, yang
semakin menambah beragamnya jenis character set.

10
Unicode Character Set

Unicode Character set yang sanggup menampung puluhan ribu karakter. Dengan kata lain
Unicode mencoba menggabungkan seluruh character set menjadi sebuah character set
“universal”. Daftar lengkap dari karakter Unicode ini bisa dilihat di unicode-table.com.

Karakter yang tersedia sangat beragam, mulai dari huruf latin, jepang, korea, arab, hingga
huruf jawa kuno dan emoji (icon).
Penggunaan Unicode character set tampak sebagai solusi ideal, akan tetapi memiliki masalah di
sisi kinerja dan efisiensi.

Dalam Unicode 16 bit, huruf ‘A’ perlu ruang penyimpanan 2 kali lipat lebih banyak dibandingkan
huruf ‘A’ dari Extended ASCII, yakni 8 bit vs 16 bit (1 byte vs 2 byte). Lebih jauh lagi, juga
dikembangkan Unicode 32 bit. Artinya, 1 huruf ‘A’ butuh dikodekan oleh 32 buah digit biner.

Ruang memory menjadi masalah disini. Jika kita beralih menggunakan Unicode, setiap dokumen
akan berukuran 2 sampai 4 kali lipat ukuran asalnya.
11
UTF-8

Solusi dari masalah ini adalah merancang character set Unicode yang ‘fleksibel’. Character set
ini diberi nama UTF-8 (Unicode Transformation Format 8 bit).

UTF-8 dirancang oleh Ken Thompson and Rob Pike. Ken Thompson sendiri merupakan ahli
komputer yang mengembangkan bahasa pemrograman B (nantinya berkembang menjadi bahasa
pemrograman C dan C++).

UTF-8 menempatkan karakter dengan panjang bit yang berbedabeda. Karakter alphabet latin (A-Z
dan a-z) sebagai karakter yang paling sering digunakan hanya butuh 8 bit (1 byte), yakni sama
seperti Extended ASCII

12
UTF-8

Agar bisa kompatibel dengan ASCII dan Extended ASCII, 256 digit karakter awal dari UTF-8 sama
persis dengan Extended ASCII.

Setelah 8 bit “habis”, karakter berikutnya akan menggunakan 2 byte (16 bit). Disinilah aksara arab,
jepang, china, korea berada.

Ketika 2 byte “habis”, karakter berikutnya akan menggunakan 3 byte (24 bit). Disini disimpan
karakter china kuno, dan berbagai karakter lain yang relatif jarang dipakai.

Terakhir terdapat karakter yang menggunakan 4 byte (32 bit) yang berisi seluruh karakter unicode
lain dan di cadangkan untuk masa depan

• $ = 00100100 (8 bit, dan merupakan bagian dari ASCII)


• ¢ = 11000010 10100010 (16 bit)
• € = 11100010 10000010 10101100 (24 bit)
13
UTF-8

UTF-8 memiliki pengkodean khusus untuk mencegah bentrok antar kode biner.

Dengan membuat character set seperti ini, UTF-8 tetap efisien. Jika kita
menyimpan huruf dalam aksara alphabet latin (seperti mayoritas teks dalam
bahasa indonesia), setiap huruf hanya butuh 8 bit atau sama jika teks tersebut
dibuat menggunakan Extended ASCII.

Saat ini UTF-8 sudah umum di gunakan terutama di bidang web programming.
Pada juni 2017, sekitar 89% dari halaman web sudah menggunakan UTF-8
sebagai character set standar.

14
UTF-16 dan UTF-32

UTF-16 mirip dengan UTF-8, tetapi menggunakan basis 16bit. Jika karakter di
16 bit sudah habis, akan menggunakan 32 bit.

Apabila anda sering menulis karakter non-latin, bisa jadi UTF-16 akan lebih
hemat tempat. Karena terdapat kemungkinan huruf tersebut disimpan sebagai
24 bit di UTF-8, tapi cukup menggunakan 16 bit di UTF-16.
UTF-32 menggunakan pengkodean 32 bit yang tetap untuk seluruh karakter
(fixed). Artinya 1 huruf “A” butuh ruang memory 4 byte. Karena terlalu boros,
UTF-32 tidak banyak dipakai.

Yang perlu diingat, baik UTF-8, UTF-16 dan UTF-32 sama-sama termasuk
Unicode dan memiliki jumlah karakter yang sama. Perbedaannya hanya dari
cara penyimpanan karakter

15
Character Set di dalam MySQL

Dari pemaparan tentang character set, UTF-8 tampak sebagai character set
yang ideal. Ini benar, terutama jika anda sering menginput kode teks dalam
aksara non-latin. Namun sebenarnya character set Extended-ASCII Latin-1
sudah memenuhi keperluan kita di Indonesia, karena sebagian besar text hanya
akan menggunakan karakter alphabet latin.

MySQL mendukung hampir semua character set yang ada. Untuk melihat apa
saja character set yang tersedia, bisa menjalankan query SHOW CHARACTER
SET:

16
CHARACTER SET

17
Dalam bahasa eropa seperti rusia, jerman dan yunani, huruf a bisa dibuat dari
beberapa karakter: à, á, â, ã, ä dan å. Inilah yang diatur dari collation, yakni
huruf a mana yang harus di dahulukan.

Untuk bahasa indonesia yang terdiri dari karakter latin standar (alphabet biasa),
tidak banyak perbedaan dari pilihan collation ini, bahkan tidak berpengaruh
sama sekali.

Untuk melihat apa saja collation yang di dukung oleh MySQL bisa menjalankan
query SHOW COLLATION:

18
COLLATION

19
Untuk bisa “membaca” character set apa sebuah collation bisa dipakai, kita bisa pecah nama
collation menjadi 3 pola:

Akhiran _ci berarti case insensitif, _cs berarti case sensitif, dan _bin berarti binary.

Sebagai contoh, latin1_german1_ci artinya collation ini digunakan untuk charset latin1, bahasa
jerman, dan bersifat case insensitif (tidak membedakan huruf besar dan kecil). Contoh lain,
latin1_general_cs artinya collation ini untuk charset latin1, bahasa general (umum), dan
bersifat case sensitif (huruf besar dan kecil dianggap berbeda). Terakhir latin1_bin adalah
collation khusus untuk charset binary.

20
Query Pembuatan Database

Dengan tambahan character set dan collation, format dasar pembuatan atabase di
MySQL adalah sebagai berikut:

CREATE DATABASE [IF NOT EXISTS] nama_database

[CHARACTER SET charset] [COLLATE collation];

Sebagai contoh, untuk membuat database belajar dengan character set utf8 dan
collation utf8_-persian_ci perintahnya adalah sebagai berikut:

CREATE DATABASE belajar CHARACTER SET utf8 COLLATE utf8_persian_ci;

21
Mengubah Charater set dan Collation

MySQL menyediakan perintah ALTER DATABASE untuk mengubah character set


dan collation.

ALTER DATABASE nama_database [CHARACTER SET charset] [COLLATE collation];

22
23
TERIMA KASIH

Anda mungkin juga menyukai