Byte dan karakter adalah tahap terpisah
Base64 RFC 4648 menyatakan byte dengan karakter. Ini tidak menentukan teks atau gambar maupun pengodean teksnya. Uji minimal ini memisahkan tahap; bukan berkas gambar contoh.
w6k= menghasilkan C3 A9: é dalam UTF-8. /w== menghasilkan FF dan gagal pada UTF-8. ww== hanya menghasilkan C3 tanpa byte berikutnya yang diperlukan. Ketiganya berhasil memulihkan byte. @@@ ditolak pada tahap pertama.
Penggantian dan dekode ketat berbeda
WHATWG menetapkan replacement sebagai mode awal TextDecoder; fatal: true melempar pengecualian saat gagal. Uji UTF-8 awal kami dengan FF menghasilkan U+FFFD. Moyoutil memakai fatal: true dan melaporkan kesalahan. Karakter pengganti tidak memulihkan teks asli yang tepat.
const bytes = Uint8Array.from(atob('/w=='), c => c.charCodeAt(0));
// bytes: [255] = FF
new TextDecoder('utf-8').decode(bytes); // U+FFFD
new TextDecoder('utf-8', {fatal: true}).decode(bytes); // TypeErrorPastikan sumber berupa teks UTF-8. Gambar dan berkas terkompresi di luar cakupan alat teks ini. Untuk pengodean lain, periksa sistem sumber dan gunakan alat yang mendukungnya. Base64 tidak menentukan pengodean. Moyoutil tidak menebaknya dan tidak mendukung - serta _ Base64URL.
Pertanyaan yang Sering Diajukan
Apakah mengubah = memperbaiki kesalahan UTF-8?
Jika byte sudah dipulihkan, mengubah = sembarangan bukan solusi. Periksa pengodean asal atau data terpotong. /w== memulihkan FF, tetapi bukan teks UTF-8 valid.