Cara Normalize NFD Diacritics di JavaScript dengan Unicode

Untuk melakukan normalisasi NFD (Normalization Form Decomposition) dan menghapus tanda diacritics atau aksen pada string di JavaScript, gunakan metode bawaan String.prototype.normalize('NFD') dikombinasikan dengan ekspresi reguler (Regex) untuk menghilangkan karakter penggabung diacritics.

NFD memecah huruf beraksen (seperti é) menjadi karakter dasarnya (e) ditambah dengan tanda diacritics terpisah (◌́). Dengan mengubah string ke bentuk NFD, Anda dapat menyaring atau menghapus tanda diacritics tersebut dengan mudah menggunakan rentang Unicode \u0300-\u036f.

Contoh Kode JavaScript Normalisasi NFD

Berikut adalah implementasi kode nyata untuk mengubah string beraksen menjadi karakter ASCII biasa:

function removeDiacritics(str) {
  return str.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
}

const textOriginal = "Café, naïve, façade, résumé";
const textClean = removeDiacritics(textOriginal);

console.log(textClean); 
// Output: Cafe, naive, facade, resume

Tabel Perbandingan Metode Normalisasi Unicode

Parameter NFD (Normalization Form D) NFC (Normalization Form C)
Definisi Dekomposisi Kanonik (Memecah karakter dan aksen) Komposisi Kanonik (Menggabungkan kembali ke bentuk standar)
Contoh Input "é" (U+00E9) "é" (U+00E9)
Hasil Pemecahan "e" (U+0065) + "́" (U+0301) Tetap menjadi satu karakter "é" jika sudah terkomposisi
Kasus Penggunaan Pencarian teks tanpa peduli aksen (accent-insensitive search), pembersihan slug URL. Penyimpanan data standar internasional yang konsisten.

Langkah-Langkah Teknis Implementasi

  1. Panggil Metode Normalize: Gunakan str.normalize('NFD') pada variabel string target untuk memisahkan huruf dasar dari tanda diakritiknya.
  2. Terapkan Regex Filter: Gunakan fungsi .replace() dengan pola /[\u0300-\u036f]/g. Rentang Unicode ini mencakup blok Combining Diacritical Marks.
  3. Hasil Bersih: String kini bebas dari aksen dan siap digunakan untuk pemrosesan lebih lanjut seperti pembuatan URL slug atau pencarian teks (search query).

Tips Troubleshooting Lapangan

Beberapa karakter khusus seperti huruf ø atau ß tidak termasuk dalam kategori tanda diakritik gabungan NFD standar, melainkan karakter terpisah di dalam Unicode. Jika aplikasi Anda memerlukan pembersihan total untuk karakter Nordik atau Jerman tersebut, Anda perlu menambahkan pemetaan karakter manual (mapping table) atau regex tambahan setelah proses NFD selesai.