UTF-8’den Base64URL’ye Dönüştürücü Kılavuzu (2026)

A clean, modern visual representing the conversion from text data to secure web URL strings.

UTF-8’i Base64URL’ye dönüştürmek için 4 adımı izleyin: (1) metni UTF-8 baytlarına kodlayın, (2) standart Base64 uygulayın, (3) +- ve /_ olarak değiştirin, (4) sondaki = dolgusunu kaldırın. Bu, RFC 4648 uyarınca URL-güvenli bir dize üretir ve JWT’lerde ile API başlıklarında kullanılır.

Standart Base64 vs. Base64URL

Karakter Standart Base64 Base64URL Neden
62. karakter + - +, URL’lerde boşluk anlamına gelir
63. karakter / _ /, URL’lerde yol ayırıcıdır
Dolgu = gerekli Atlanmış =, URL’lerde %3D olur
URL-güvenli Hayır Evet Sorgu dizelerinde ve dosya adlarında doğrudan kullanım

RFC 4648 §5 uyarınca, bu “URL ve Dosya Adı Güvenli Alfabesi” sistemler arası uyumluluğu garanti eder.

Standart Base64 ve Base64URL'nin güvenli olmayan karakterlerinin basit bir yan yana karşılaştırması.

4 Adımlı Dönüştürme Süreci

Adım İşlem Örnek (“Hello”)
1 UTF-8 metni → baytlar H e l l o → bayt dizisi
2 Baytlar → standart Base64 SGVsbG8=
3 +-, /_ olarak değiştir Burada değişiklik gerekmiyor
4 Sondaki = dolgusunu kaldır SGVsbG8

Base64 kodlaması, veri boyutunu Wikipedia‘ya göre yaklaşık ~%33 artırır.

4 adımlı dönüştürme işlemi: Metin -> Baytlar -> Base64 -> Base64URL.

Unicode ve Emoji İşleme

NextUtils‘a göre, Base64 kodlamadır, şifreleme değil — verileri yalnızca metin kanallarından geçirir. Unicode/emoji’yi bozulma olmadan (“Mojibake”) işlemek için, önce UTF-8 baytlarına dönüştürmek üzere her zaman TextEncoder kullanın.

Girdi TextEncoder Olmadan TextEncoder İle
Hello 世界! 🌍 Mojibake / TypeError Doğru Base64URL

Kod Örnekleri

JavaScript (Tarayıcı) — Unicode-Güvenli

function toBase64Url(str) {
    const bytes = new TextEncoder().encode(str);
    const base64 = btoa(String.fromCharCode(...bytes));
    return base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
}

Python 3 — Standart Kütüphane

AskPython‘a göre:

import base64

data = "Hello 世界! 🌍"
encoded = base64.urlsafe_b64encode(data.encode('utf-8')).decode('utf-8').rstrip('=')
print(encoded)

Node.js — Buffer Dönüştürme

const str = "API_Payload_Data";
const base64url = Buffer.from(str, 'utf8')
    .toString('base64')
    .replace(/\+/g, '-')
    .replace(/\//g, '_')
    .replace(/=/g, '');

Sorun Giderme: Dolgu Hataları

Hata Neden Çözüm
binascii.Error: Incorrect padding Eksik = dolgusu Uzunluk 4’ün katı olana kadar = ekleyin
TypeError ile atob() ASCII olmayan karakterler Önce TextEncoder kullanın
Bozuk çıktı UTF-8 kodlama atlandı Base64’ten önce her zaman baytlara kodlayın

AskPython‘a göre, eksik dolguyu hesaplayın: padding_needed = (4 - len(data) % 4) % 4, ardından o kadar = karakteri ekleyin.

Kullanım Senaryoları: JWT ve Data URI’leri

JWT (JSON Web Token) Yapısı

Bölüm İçerik Kodlama
Başlık Algoritma + token türü Base64URL
Yük Talepler (kullanıcı verileri, son kullanma) Base64URL
İmza HMAC veya RSA imzası Base64URL

JWT’ler genellikle eyJ ile başlar — bu, { (JSON açılış ayracı) karakterinin Base64URL kodlamasıdır.

JWT yapısının 3 Base64URL bölümünü gösteren basit bir görselleştirme.

Kullanım Senaryosuna Göre Base64 vs. Base64URL

Kullanım Senaryosu Kodlama Dolgu
JWT token’ları Base64URL Atlanmış
Data URI’leri (gömülü görüntüler) Standart Base64 Gerekli
HTTP Basic Auth Standart Base64 Gerekli
URL sorgu parametreleri Base64URL Atlanmış

Sonuç

4 adım: UTF-8 baytları → Base64 → +/ karakterlerini -_ ile değiştir → dolguyu kaldır. JavaScript’te TextEncoder, Python’da base64.urlsafe_b64encode(), Node.js’te Buffer kullanın. Sistemler arası uyumluluk için RFC 4648’e uyun. Base64URL kodlamadır, şifreleme değil — güvenlik için AES-256 veya TLS kullanın.

SSS

Base64URL şifrelemeyle aynı şey mi?

Hayır. Base64URL tersine çevrilebilir bir kodlamadır — herhangi birisi bir anahtar olmadan çözebilir. Hassas verileri güvenli hale getirmek için AES-256 veya TLS/SSL kullanın.

Base64URL neden standart bir Base64 çözücüsünde başarısız oluyor?

Standart çözücüler +, / ve = dolgusu bekler. Base64URL, -, _ kullanır ve dolguyu atlar. Çözmek önce karakter değişimlerini geri alın ve dolguyu geri ekleyin.

JWT’lerde dolgu neden atlanıyor?

= karakteri URL’lerde %3D olur ve bu da dizeleri daha uzun ve okunması daha zor hale getirir. RFC 4648, çözücülerin dolgu işaretleri olmadan orijinal uzunluğu yeniden yapılandırabileceği için atlamaya izin verir.

Comments

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir