ASCII to Entities
Kali ini saya ingin berbagi pengalaman ringan tentang karakter ASCII yang bermasalah pada saat digunakan di aplikasi web. Belum lama ini mendapat pesanan aplikasi desktop dan web yang mengakses satu database yaitu Microsoft SQL Server. Pesanan awal adalah aplikasi desktop yang dibuat dengan Visual Basic 6, kemudian ada permintaan dibuatkan aplikasi web juga. Akhirnya kami buat menggunakan PHP dengan CodeIgniter Framework yang ditanam di Web Server Linux Ubuntu 12.04. Koneksi PHP ke database Ms SQL Server 2000 menggunakan FreeTDS. Pada saat development menggunakan OS Windows 7 semua berjalan lancar tanpa ada masalah, tetapi ketika diupload ke web server Linux Ubuntu muncul masalah pada saat saat menampilkan data, setelah kami trace menggunakan firebug di Firefox muncul error pada json_encode, seperti di bawah ini.
A
PHP Error was encountered
Severity: Warning
Message: json_encode(): Invalid
UTF-8 sequence in argument
Filename:
controllers/trskegiatan.php
Line Number: 90
Hal itu terjadi karena pada salah satu record yang tampil yaitu terdapat karakter ASCII yang jika muncul di web berupa \r\n yang menyebabkan error pada argument json_encode. Biasanya data tersebut import dari data Excel dan sejenisnya sehingga kurang "bersih". Setelah googling dan berjibaku selama dua hari akhirnya muncul beberapa solusi. Seperti setting FreeTDS ditambah client charset = UTF-8 dan sebagainya ternyata kurang manjur, akhirnya "resep" yang manjur adalah menggunakan fungsi Framework CodeIgniter yaitu :
ascii_to_entities()
Converts ASCII values to character entities, including high ASCII and MS Word characters that can cause problems when used in a web page, so that they can be shown consistently regardless of browser settings or stored reliably in a database. There is some dependence on your server's supported character sets, so it may not be 100% reliable in all cases, but for the most part it should correctly identify characters outside the normal range (like accented characters). Example:$string = ascii_to_entities($string);
Dengan fungsi tersebut maka semua karakter ASCII pada data yang bisa menyebabkan masalah di browser langsung dikonversi.
Semoga artikel ini bisa membantu rekan -rekan.
tools:
Sencha ExtJS
Microsoft SQL Server 2000
Visual Basic 6
Linux Ubuntu 12.04
FreeTDS
CodeIgniter PHP Framework
Labels: codeigniter, PHP, SQL SERVER, TIPS, ubuntu