mfurkanayhan// çözüm atölyesi
← Araçlar

Araç · ücretsiz

Kodlayıcı / çözücü

Base64, URL ve HTML — iki yönlü. Türkçe karakterler bozulmadan: tarayıcının kendi btoa işlevi ş harfinde hata fırlatıyor, çoğu araç da o hatayı yutuyor.

Tarayıcında çalışır · sunucuya hiç gitmiyor

Sık sorulanlar

Metnim bir yere gönderiliyor mu?

Hayır. Kodlamanın tamamı tarayıcında yapılıyor; hiçbir şey cihazından çıkmıyor. Bu araçlara çoğu zaman gerçek veri yapıştırılıyor — bir API anahtarı, bir müşteri kaydı — ve o verinin nereye gittiği önemli.

Türkçe karakterli metni neden başka araçlar bozuyor?

Çünkü tarayıcının yerleşik btoa işlevi yalnızca latin1 kabul ediyor: kod noktası 255’i geçen her karakterde InvalidCharacterError fırlatıyor. btoa("ş") doğrudan hata veriyor. Araçların bir kısmı bu hatayı yutup boş çıktı gösteriyor, bir kısmı da kullanımdan kaldırılmış unescape hilesiyle geçiştiriyor. Doğrusu metni önce UTF-8 bayta çevirmek: TextEncoder → bayt → Base64. Bu araç öyle yapıyor ve testleri Türkçe metinle koşuyor.

Karakter ile bayt neden farklı sayılıyor?

ş bir karakter ama iki bayt; emoji bir karakter ama dört bayt. Base64 çıktısının boyutu ve veritabanı sütun sınırı bayta göre hesaplanıyor, ekrandaki uzunluk ise karaktere göre. İkisini birden göstermek bu yüzden: “255 karakter sığar” diye ayrılan bir alan Türkçe metinde 127 karakterde doluyor.

URL’de “değer” ile “adres” kodlaması arasındaki fark ne?

encodeURIComponent bir değeri kodlar ve &, =, ?, / dahil her ayracı kaçırır — sorgu parametresine koyacağın şey için doğru olan bu. encodeURI ise bir adresin tamamını kodlar, ayraçları olduğu gibi bırakır. En yaygın hata parametre değerini encodeURI ile kodlamak: içindeki & kaçmadığı için adres orada bölünüyor ve parametre yarım kalıyor.

HTML kodlamada Türkçe harfler neden olduğu gibi kalıyor?

Çünkü HTML’i bozabilecek olan yalnızca beş karakter: & < > " '. Türkçe harfler tehlikeli değil. Birçok araç “tam kodlama” yapıp şyi &#351;e çeviriyor; sonuç geçerli HTML ama dosya şişiyor, kaynak okunmaz oluyor ve asıl önemlisi metin arama için bozuluyor — veritabanına öyle kaydedilirse ş arayan bulamıyor. Tam kodlama yine de burada, ama isteğe bağlı ve uyarılı.

Kodlamayı girişte mi yapmalıyım, çıkışta mı?

Çıkışta. Girişte kodlamak veriyi kalıcı olarak bozuyor: kullanıcı Ağaç & Şirket yazdıysa veritabanında öyle durmalı, A&#287;a&#231; olarak değil. Aynı veri bir gün e-postaya, bir PDF’e ya da bir CSV’ye gidecek ve orada HTML kaçışı anlamsız. Kaçış, metnin HTML’e yazıldığı anda yapılır.

Base64 bir şifreleme mi?

Hayır, sadece bir gösterim. Anahtar yok, gizlilik yok; herkes tek tıkla geri çözer. İkili veriyi metin taşıyan bir kanaldan (JSON, e-posta, adres çubuğu) geçirmeye yarıyor. Parolayı Base64’le “saklamak” onu düz metin bırakmakla aynı şey.

Base64 ile Base64URL farkı nedir?

Alfabesi. Düz Base64 + ve / kullanıyor; ikisi de adres içinde ayrı anlam taşıdığı için adres çubuğunda bozuluyor. Base64URL onları - ve _ ile değiştirip sondaki = dolgusunu atıyor. JWT’nin üç parçası bu değişkeyle kodlanmış — JWT çözücü aynı çekirdeği kullanıyor.

Çözerken neden bazen “geçerli UTF-8 değil” diyor?

Base64 çözüldü ama içinden çıkan baytlar metin değil — çoğu zaman bir görsel ya da başka bir ikili dosya. Bu durumda çoğu araç baytları zorla metne çevirip � karakterleriyle dolu bir sonuç gösteriyor; bu “çözüldü” izlenimi veriyor ve kullanıcı yanlış metne bakıyor. Burada bunun yerine açıkça söyleniyor.

Tek satırlık sebep

Bu aracın var olma sebebi tek bir ifadede görünüyor: btoa("ş") çalışmıyor, hata fırlatıyor. Tarayıcının Base64 işlevi 1990’ların varsayımıyla yazılmış — bir karakter bir bayt. Türkçe metinde bu varsayım ilk harfte çöküyor.

Doğru yol uzun değil: metni TextEncoder ile UTF-8 bayta çevir, baytları kodla. Çözerken tersini yap ve bozuk UTF-8’i sessizce doldurma — çözülemiyorsa söyle. Üç satırlık fark ama sonucu belirliyor: aracın Türkçe metinle çalışıp çalışmadığını.

Aynı ilke HTML tarafında da geçerli. Kaçış çıkışta yapılır, girişte değil; ve yalnızca HTML’i bozabilecek beş karakter kaçırılır. Türkçe harfi &#351;e çevirmek veriyi arama için bozuyor — bir kez kaydedildikten sonra geri dönüşü de kolay olmuyor.

Diğer araçlar: JWT çözücü · Metin araçları · JSON ↔ CSV · Renk ve kontrast