araç köşesi

Metin ve Base64 Arasında Dönüşüm

Metni Base64'e kodlayın veya Base64 dizesini metne çözün

Verileriniz sizde kalır. Dönüşüm tarayıcının içinde yapılır, hiçbir şey sunucuya gitmez.

Nasıl çalışır?

Metninizi sol panele yapıştırın ve işlem yönünü seçin; sonuç siz yazarken sağ panelde belirir. Kodlama yönünde metin önce UTF-8 baytlarına çevrilir, ardından 64 karakterlik Base64 alfabesiyle yazılır — bu yüzden ğ, ü, ş gibi harfler ve emoji çıktıda bozulmaz. Çözme yönünde dizedeki boşluklar ve satır sonları yok sayılır; başına 'data:text/plain;base64,' gibi bir önek yapıştırırsanız o da atlanır, URL güvenli biçimdeki - ve _ karakterleri standart karşılıklarına çevrilir. Dize Base64 alfabesine uymuyorsa hangi karakterin sorun çıkardığı söylenir; çözülen baytlar geçerli bir UTF-8 metni oluşturmuyorsa bu da ayrıca bildirilir, çünkü o durumda elinizdeki veri metin değil ikili dosyadır. Sonuç satırında kaç karakterin kaç bayta ve kaç karakterlik çıktıya karşılık geldiğini görürsünüz. Çıktıyı tek tıkla kopyalayabilir veya metin dosyası olarak indirebilirsiniz.

Bu araç base64 kodlama, base64 encode, base64 decode aramalarıyla da biliniyor.

Base64 nedir?

Base64, veriyi üçer bayt alıp dörder karaktere yazan bir sayı tabanı çevirisidir: her 6 bitlik parça, A-Z, a-z, 0-9, + ve / karakterlerinden birine karşılık gelir, artan yer = işaretiyle doldurulur. Metin olarak yazılabildiği için satır sonu, ayraç ve karakter kümesi sorunu olan alanlarda kullanılır: HTTP başlıkları, JWT belirteçleri, e-posta gövdeleri, yapılandırma dosyaları. Bedeli boyuttur — çıktı kaynağın yaklaşık üçte bir fazlasıdır. Türkçe metinde kritik nokta, kodlamanın karakterlere değil BAYTLARA uygulanmasıdır: 'ş' harfi UTF-8'de iki bayt tuttuğu için önce metnin bayt karşılığı çıkarılmalı, Base64 ondan sonra uygulanmalıdır.

UTF-8 nedir?

UTF-8, karakterleri değişken sayıda bayta yazan karakter kodlamasıdır ve bugün web'in varsayılanıdır. İngiliz alfabesindeki harfler tek bayt tutar; ğ, ü, ş, İ gibi Türkçe harfler iki bayt, emoji dört bayt tutar. Bu yüzden Türkçe bir cümlenin karakter sayısıyla bayt sayısı aynı değildir — 30 karakterlik bir metin 36 bayt olabilir. Base64, veritabanı alan sınırı ve dosya boyutu hesapları bayt üzerinden yürüdüğü için bu ayrım pratikte önemlidir; bu araç sonuç satırında ikisini ayrı ayrı gösterir.

Base64 şifreleme midir?

Hayır, Base64 bir kodlamadır; şifreleme değildir. Aradaki fark anahtardır: şifrelemede veriyi geri getirmek için gizli bir anahtar gerekir, kodlamada ise kural herkese açıktır ve dizeyi eline geçiren herkes tek tıkla geri çözebilir. Base64 diziler okunmaz göründüğü için sık sık güvenlik önlemi sanılır; oysa yalnızca biçim değiştirir, gizlilik sağlamaz. Parolayı, API anahtarını veya kişisel veriyi Base64'e çevirip 'gizledim' saymak yaygın ve tehlikeli bir hatadır. Base64'ün işi veriyi yalnızca metin taşıyan kanallardan bozulmadan geçirmektir; veriyi gizlemek gerekiyorsa gerçek şifreleme kullanılmalıdır.

Türkçe metin Base64'te neden bozulur?

Tarayıcıların hazır kodlama işlevi olan btoa yalnızca 0-255 aralığındaki tek baytlık değerleri kabul eder. 'ş' harfi UTF-8'de iki bayt tuttuğu için bu işlev ya hata verir ya da metni Latin-1 sanıp yanlış bayt üretir; çıktıyı çözen taraf 'Åi' gibi anlamsız karakterler görür.

Bu araç aradaki adımı atlamaz: metin önce UTF-8 baytlarına çevrilir, Base64 alfabesi bu baytlara uygulanır. Aynı işlem tersten de çalıştığı için kodlayıp yeniden çözdüğünüzde metnin birebir aynısını alırsınız.

Base64 dizesi nerede işinize yarar?

Base64 metin taşıyabilen ama ikili veri taşıyamayan kanallar için üretildi; bugün çoğunlukla ayraç veya kodlama sorunundan kaçınmak için kullanılır.

  • HTTP Basic Authorization başlığındaki kullanıcı adı ve parola çifti
  • JWT belirteçlerinin üç parçası (URL güvenli alfabeyle)
  • E-posta eklerinin ve MIME gövdelerinin aktarımı
  • Yapılandırma dosyalarına tek satırda gömülen sertifika ve anahtar metinleri
  • Kaçış karakteri sorununu ortadan kaldırmak için JSON alanına konan uzun metinler

Çözerken görebileceğiniz iki ayrı hata

İlki alfabe hatasıdır: dizede Base64'e ait olmayan bir karakter vardır ya da uzunluk dörde bölünmez. Bu genelde eksik kopyalamadan olur; dizenin sonundaki = işaretlerini de birlikte kopyaladığınızdan emin olun.

İkincisi metin hatasıdır: dize geçerli Base64'tür, baytlar çözülür, ama o baytlar geçerli bir UTF-8 metni oluşturmaz. Bu, elinizdeki verinin aslında bir görsel, PDF ya da sıkıştırılmış dosya olduğu anlamına gelir; böyle bir içeriği metin olarak göremezsiniz.

Sık sorulanlar

Türkçe karakterler doğru kodlanıyor mu?

Evet. Metin UTF-8 baytlarına çevrildikten sonra kodlandığı için ğ, ü, ş, ı, İ ve emoji dahil her karakter korunur; kodlayıp yeniden çözdüğünüzde metnin aynısını elde edersiniz.

URL güvenli (base64url) dizeler destekleniyor mu?

Çözme yönünde evet: - ve _ karakterleri standart + ve / karşılıklarına çevrildikten sonra okunur, eksik doldurma işaretleri tamamlanır. Kodlama yönünde çıktı standart alfabeyle üretilir.

Dizenin sonundaki = işareti ne anlama geliyor?

Base64 veriyi üçer bayt alıp dörder karakter yazar. Son parça üç bayta tamamlanmıyorsa uzunluğu dörde tamamlamak için bir ya da iki = eklenir. Bu işaretler verinin parçasıdır; kopyalarken atlanırsa çözme başarısız olabilir.

Yapıştırdığım metin bir yere gönderiliyor mu?

Hayır. Kodlama ve çözme tamamen tarayıcınızın içinde çalışır; parola, belirteç ya da yapılandırma metni yapıştırsanız bile veri bu sayfadan çıkmaz.