Mengatasi Masalah Encode Emoji πŸ˜‹ dengan PHP

Mengatasi masalah untuk encode emoji saat dimasukkan kedalam database dengan bahasa PHP

Hudya
3 min readAug 12, 2018

Halo guys! Sore ini gue sebenernya bingung mau nulis apa lagi, mungkin gue nulis library sederhana aja kali ya, library ini bukan ditulis sama gue tapi sering gue pake.

Oke jadi kenapa judulnya Library Encode Emoji πŸ˜‹ dengan PHP?

Jadi gini, pasti bagi yang ngoding RESTful API pernah kesulitan dalam memasukkan teks dengan emoji seperti πŸ˜‹ ke database. Ngaku aja lo yakan? Nah sebenernya ada beberapa teknik yang pernah gue baca di STACKOVERFLOW untuk memasukan teks + emoji google/ios ke database.

Umumnya, database kita itu menggunakan UTF-8. Nah UTF-8 ini engga bisa nge-encode emoji yang akan masuk ke database. Alhasil saat kalian create data dengan emoji pasti error pas lagi insert. Nah solusinya apa? Ada dua cara yang pernah gue lakukan:

  1. Lo ubah tipe database lo menjadi UTF-8mb4 dan kolom di table yang akan dimasukkan emoji menjadi UTF-8mb4 juga. Tapi ada kelemahannya disini, entah gue yang salah atau gimana. Tiap gue masukkin emoji + teks dengan tipe ini nanti dari databasenya cuma bisa nyimpen emoji kedua. Contoh gue masukkin data seperti ini β€œHey KamuπŸ˜‹, Kamu cantik banget deh, tapi boong πŸ˜‹β€. Alhasil ketika gue return data gue lewat JSON akan menjadi seperti ini β€œHey Kamu<?>, Kamu cantik banget deh, tapi boong πŸ˜‹β€. Nah apa masalahnya? ya jelas entah kenapa emoji pertama gabisa di encode di database. Jadi encode emoji tersebut hanya berlaku saat emoji kedua dan seterusnya. Tapi keuntungannya ya jelas lo gaperlu library (Loh masalah library apa gan?). Jelas banget library bermasalah dalam menurunkan performa atau speed process lo saat menampilkan data atau mengolah data. Semakin sedikit proses ya semakin cepat dan RAM di server lu pasti makin dikit digunakan. Jadi itu perlu diperhatikan ya.
  2. Dengan menggunakan Library PHP Emoji Converter buatan om yinzhiping. Jujur aja nih library paling tokcer dan gue pribadi pake library ini buat nge-encode/decode emoji + teks yang masuk ke database. Dengan library ini, dia akan mengubah emoji πŸ˜‹ ini kedalam teks unicode. Contohnya adalah β€œπŸ˜„,hi” akan diubah menjadi β€œ\ud83d\ude04,hi”. Nah kelebihannya apa? tentunya ini bakalan lebih mudah buat database mengerti karena dengan utf-8 pun database tetep bisa masukin character tersebut ke database. Jadi logikanya adalah tiap emoji + teks yang akan masuk lo akan meng-ENCODE teks tersebut agar database dapat menerimanya. Saat lo ingin menampilkannya, lo bisa men-DECODE teks tersebut agar user dapat melihat emoji + teksnya. Bisa dibilang ini Library yang cukup ramah dan gampang banget makenya. Tapi jelas kelemahannya ya lo akan menggunakan sepersekian waktu dalam mengubah semua teks tersebut agar diubah menjadi unicode.

Mungkin ada yang berfikir (yaelah gapapa kali). It’s ok emang gapapa kok, tapi kalo kita bisa mengurangi proses kita kenapa kita harus nambah-nambahin? Didalam ilmu backend speed is one of primary weapon, semakin cepat proses maka akan semakin baik. Tentunya lu juga enggak mau kan kalo server lu kerja lebih banyak? Kalo masih ada yang kurang paham kenapa kita harus mengurangi proses, gini bayangkan aja kalo endpoint API lu di request secara terus-menerus dalam jeda detik dan sama banyak user. Tentunya CPU, RAM, ataupun IO di server lu akan bekerja terus dan bisa-bisa down kalo semakin banyak yang request. Tentunya kita sebagai backend harus tau hal tersebut πŸ˜‹.

Semakin optimize code kita, semakin kita tau efek proses ke server dari code kita maka harga kita semakin mahal di mata para tech-company.

-Entah Quotes Siapa

PHP Emoji Encode-Decode by yinzhiping

Nah itu aja yang dapat gue sampaikan kali ini, next post gue akan jelasin cara encode dan decode emoji dengan Node JS jadi stay tune ya!

--

--

Hudya
Hudya

Written by Hudya

Which is more difficult, coding or counting? Not both of them, the difficult one is sharing your knowledge to people without asking the payment.

No responses yet