Mengatasi Error: Could not encode content to ISO-8859-1 Generate QRCode di Laravel
Beberapa hari yang lalu, saya mendapat kabar dari pelanggan bahwa ada error di
salah satu website yang saya buat dan kembangkan.
Errornya kira-kira seperti ini:
Could not encode content to ISO-8859-1 dan ada exception yang
menyatakan masalahnya di library BaqonQRCode\Exception\WriterException.
Masalah:
Setelah saya cari masalahnya di internet, kemungkinan besar masalah ini
terjadi karena device yang digunakan pengguna, yaitu iPhone dan browsernya
safari, tidak bisa membaca karakter default dari QRCode ini: ISO-8859-1.
ISO-8859-1 adalah karakter encoding yang mana pada umumnya digunakan untuk
bahasa di Western European atau Eropa Barat.
Saya tidak tahu pasti seri iPhone apa yang digunakan oleh pengguna, sepertinya
dibawah 6/7. Dan juga versi safari browsernya saya juga tidak tahu pasti.
Solusi:
Oke, jadi saya memutuskan untuk menggunakan karakter UTF-8 sebagai pengganti
ISO-8859-1. Karakter UTF-8 lebih kompatibel dan mendukung untuk berbagai
device, termasuk iPhone dan Android.
Ohh, iya sebelumnya saya menggunakan Laravel 9 dan library QR Codenya
Simple QRCode
dari Simple Software.
Begini codingan saya untuk generate QR Code sebelum convert ke UTF-8 di
template
blade.php
<div class="visible-print text-center p-5">
{!! QrCode::size(300)->errorCorrection('H')->generate('url_or_whatever_you_want_to_show_to_the_qrcode') !!}
</div>
Untuk mengubah karakter encoding di QR Codenya menjadi UTF-8, bisa dengan
perintah encoding. Sehingga menjadi seperti ini.
<div class="visible-print text-center p-5"> {!! QrCode::size(300)->errorCorrection('H')->encoding('UTF-8')->generate('url_or_whatever_you_want_to_show_to_the_qrcode') !!} </div>
Seharusnya dengan mengubah karakter encodingnya menjadi UTF-8, error
tersebut tidak akan muncul lagi.
Walaupun sebenarnya belum saya test di perangkat iPhone karena memang belum
ada iPhone yang mau ditest. Mungkin nanti akan saya coba.