Nasıl kullanılır
- Kontrol etmek istediğiniz dizeyi girdi alanına yapıştırın.
- Sonucu inceleyin: dizenin geçerli olup olmadığı, algılanan varyant (standart veya URL güvenli) ve çözülmüş boyut gösterilir.
- Sorunlar listelenmişse, geçersiz karakterleri, boşluk karakterlerini veya yanlış yerdeki dolguyu bulmak için bildirilen konumları kullanın.
- Verinin metin mi yoksa PNG, PDF veya ZIP gibi bir dosya mı olduğunu görmek için algılanan içerik türüne bakın.
Base64'ü geçerli kılan nedir?
- Alfabe. Yalnızca
A-Z,a-z,0-9ve iki karakter daha kullanılabilir: standart Base64'te+ve/, Base64URL'de-ve_. Her iki çifti karışık kullanan bir dize genellikle bozulmuştur ya da iki farklı kaynaktan birleştirilmiştir. - Dolgu.
=işareti yalnızca sonda ve en fazla iki kez bulunabilir. Ortadaki dolgu genellikle kodlanmış iki değerin art arda eklendiği anlamına gelir. - Uzunluk. Dolgu varsa uzunluk 4'ün katıdır. Dolgu yoksa 4n + 1 dışındaki her uzunluk geçerlidir: artan tek bir karakter yalnızca 6 bit taşır, bu da bir bayt için yeterli değildir.
Katı kod çözücüler bir kural daha ekler: son karakterin kullanılmayan düşük bitleri sıfır olmalıdır. Birçok kod çözücü bu bitleri yok sayar, ancak Go'nun base64.StdEncoding.Strict() gibi bazıları dizeyi reddeder.
Yaygın hatalar ve çözümleri
| Sorun | Tipik neden | Çözüm |
|---|---|---|
| Geçersiz karakter | Değerle birlikte kopyalanan tırnaklar, ters eğik çizgiler veya %2B ve %3D kaçışları | Fazla karakterleri kaldırın veya önce URL kodunu çözün |
| Ortada boşluklar | Değer bir URL veya formdan geçerken + karakterlerinin boşluğa dönüşmesi | + karakterlerini geri koyun veya URL'ler için Base64URL kullanın |
| 4n + 1 uzunluk | Değerin sütun sınırı, günlük satırı veya eksik kopyalama nedeniyle kesilmesi | Değerin tamamını yeniden kopyalayın |
| Ortada dolgu | Birleştirilmiş iki Base64 dizesi | Bölün ve her parçanın kodunu ayrı ayrı çözün |
| Satır sonları | MIME veya PEM satır kaydırması | Genellikle zararsızdır; tek satır gereken yerlerde kaldırın |
Geçerli olması anlamlı olduğu anlamına gelmez
Base64'ün başlığı veya sağlama toplamı yoktur; bu nedenle geçerlilik yalnızca bir dizenin çözülebileceğini söyler. Birçok sıradan kelime bu denetimden geçer: herhangi dört harf geçerli bir grup oluşturur. Doğrulayıcının veriyi ayrıca çözüp boyutunu ve içerik türünü bildirmesinin nedeni budur. Okunabilir metin veya PNG, PDF ya da ZIP gibi bilinen bir dosya imzası, dizenin gerçekten Base64 olduğuna dair güçlü bir kanıttır; birkaç rastgele bayt ise değildir. Başka kodlamaları da test etmek için kodlama algılayıcıyı deneyin.
Kodda Base64 doğrulama
// JavaScript: dolgulu standart Base64 (boş bir dizeyle de eşleşir)
/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/
# Python: geçersiz karakterleri atlamak yerine hata fırlat
import base64, binascii
try:
base64.b64decode(s, validate=True)
except binascii.Error:
print('invalid')
Sıkça sorulan sorular
Sıradan bir kelime neden geçerli Base64 olarak bildiriliyor?
test kelimesi üç bayta çözülür. Algılanan içerik türünü kontrol edin: sonuç ne okunabilir bir metin ne de bilinen bir dosya türüyse, girdi muhtemelen hiçbir zaman Base64 değildi.Boşluk veya satır sonu içeren Base64 geçerli midir?
MIME ve PEM, Base64 verisini satırlara böler ve çoğu kod çözücü boşluk karakterlerini atlar. Ancak JSON alanları, HTTP başlıkları, JWT'ler ve data URI'ler kesintisiz tek bir dize bekler. Doğrulayıcı boşluk karakterlerini ayrıca listeler; böylece dizenin kullanılacağı yerde bunun önemli olup olmadığına siz karar verebilirsiniz.
= dolgusu olmayan Base64 geçerli midir?
= işaretleri ekleyin. 4n + 1 karakterlik dolgusuz dizeler hiçbir zaman geçerli değildir.JavaScript'te bir dizenin Base64 olup olmadığını nasıl kontrol edebilirim?
atob() fonksiyonunu try/catch içinde çağırmaktır. atob() hatalı girdide InvalidCharacterError fırlatır, ancak boşlukları ve eksik dolguyu sessizce kabul eder ve URL güvenli karakterleri kabul etmez.