Thursday, February 3, 2011

MySQL Unicode UTF8

Dibumi tempat kita tinggal ini terdapat banyak bahasa, evolusi bahasa yang terjadi di setiap daerah telah melalui masa yang sangat lama. 



Salah satu faktor terjadi evolusi bahasa adalah karena daerah tempat tinggal manusia.

Semakin banyaknya bahasa akan diikutin pula dengan hurup dan angka untuk merepresentasikan bahasa dalam tulisan. seperti bahasa arab, thailand, china, jepang, jawa, india mempunyai bentuk hurup dan angka yang berbeda.

Database yang berfungsi sebagai penyimpan data seharusnya telah dilengkapi fitur untuk dapat menerima karakter-karakter non-latin.

Pada MySQL Database telah di lengkapi dengan fitur utf8 (Unicode Transformation Format with 8-bit units) Character Set yang berfungsi sebagai alternatif untuk menyimpan Unicode Data.

Character Set tipe utf8 dapat dimanfaatkan untuk menyimpan data-data karakter yang non latin seperti Arab, Korea, Jepan, China.

Unicode adalah suatu standar industri yang dirancang untuk mengizinkan teks dan simbol dari semua sistem tulisan di dunia untuk ditampilkan dan dimanipulasi secara komputer. Unicode dikoordinasi dan dikembangkan oleh suatu organisasi nirlaba yaitu Unicode Consortium

Database MySQL yang saya gunakan versi 5.1 dengan Operation System Ubuntu 11.04 - the Natty Narwhal

Berikut adalah contoh beberapa nama kota yang mengadung karakter selain latin di negara Argentina.

a. Penampakan karakter apabila database tidak dapat menerima karakter selain latin.

Pada gambar diatas tampak nama lokasi yang terdapat pada field loc_name mengandung karakter yang tidak diterjemahkan dengan baik.


b. Penampakan karakter yang databasenya dapat menerima karakter selain latin

Pada gambar diatas tampak nama lokasi yang non latin pada field loc_name berhasil diterjamahan dengan baik.



Membuat Unicode UTF8

Berikut ini adalah cara membuat Database yang supportt UTF 8, dicontoh ini "kamus" ssebagai sample nama database.
CREATE DATABASE kamus DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci
Bila informasi dari database dilihat maka yang menggunakan UTF 8 akan tampak seperti dibawah ini
SHOW CREATE DATABASE kamus;

Dengan memberikan set UTF 8 saat membuat database maka secara otomatis disaat membuat table pada database tersebut akan diberikan UTF8. Dibawah ini adalah contoh tabel bernama "artikata" dari database kamus yang menggunakan UTF8.
SHOW CREATE TABLE artikata
CREATE TABLE `artikata`  
  `id` bigint(20) NOT NULL DEFAULT '0',
  `istilah` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `deskripsi` text COLLATE utf8_unicode_ci,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 
Pada contoh diatas "artikata" adalah nama table yang memilik UTF8, hal tersebut dapat terlihat diketerangan CHARSET=utf8 COLLATE=utf8_unicode_ci

Pada field-field table "artikata" bertipe kelompok char secara otomatis akan diberikan UTF8, hal tersebut dapat dilihat di tulisan COLLATE utf8_unicode_ci pada setiap field
  • `istilah` varchar(255) COLLATE utf8_unicode_ci
  • `deskripsi` text COLLATE utf8_unicode_ci

Pada sebuah kasus mungkin CHARSET database yang digunakan terlanjur bukan UTF8, tetapi kita memerlukan table yang dapat menyimpan karakter selain latin.

Berikut ini cara membuat table yang menyertakan charset utf8
create table test (id int, nama varchar(255), primary key(id) ) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
SQL diatas adalah membuat table bernama test ditambah DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci yang berfungsi memberikan charset utf8

Andaikan yang perlu diubah ke UTF8 adalah hanya field tertentu Anda dapat menggunakan perintah modifikasi field seperti dibawah ini.
ALTER TABLE test MODIFY description TEXT CHARSET utf8 COLLATE utf8_unicode_ci;
SQL diatas terdapat  CHARSET utf8 COLLATE utf8_unicode_ci yang berfungsi memberikan charset utf8 pada field description di table test


1 comment:

  1. syukurlah, akhirnya bisa juga masukin tulisan arab ke mysql, soalny kmren ane pake latin -_-
    makasih gan

    ReplyDelete