Base64 Encoder and Decoder
A free online Base64 encoder and decoder for quick encoding and decoding, with convenient features like UTF-8 support, secure copy, and clear.
التشفير (نص → Base64)
فك التشفير (Base64 → نص)
تعليمات الاستخدام
يُحول Base64 البيانات الثنائية إلى ASCII لتسهيل النقل والتخزين. سيزيد حجمها بنسبة حوالي 33%.
التشفير: تحويل النص العادي إلى Base64 لنقله بأمان أكبر.
فك التشفير: استعادة النص الأصلي من سلسلة Base64.
الميزات
- آمن لـ UTF-8: التعامل الصحيح مع الأحرف غير ASCII (باستخدام encodeURIComponent/unescape كملفوفات).
- دعم آمن للرابط: تبديل واحد بين + / → - _، مع خيار إزالة التعبئة =.
- معالجة قبل فك التشفير: يمكن تجاهل المسافات البيضاء، واستعادة التشفير الآمن للرابط تلقائيًا، ومليء = تلقائيًا.
- تفاعل مباشر: معالجة تلقائية عند الإدخال، مع عرض إحصائيات الطول ونسبة الزيادة.
- سهولة الاستخدام: نسخ سريع، تعبئة متبادلة للنتائج، قابلية الوصول عبر لوحة المفاتيح، ومتوافق مع الأجهزة المحمولة.
- تصميم موحد: لا يستخدم فئات Tailwind dark:، بل يعتمد بالكامل على موضوع DaisyUI.
ما هو Base64؟
Base64 هي طريقة لترميز البيانات الثنائية كنص ASCII، وتُستخدم غالبًا لنقل محتوى الصور أو الملفات عبر بروتوكولات نصية مثل JSON وXML وHTTP.
إنها تُحول كل 3 بايتات إلى 4 أحرف قابلة للطباعة، مما يؤدي عادةً إلى زيادة في الحجم بنسبة حوالي 33%.
يستخدم Base64 القياسي الأحرف A–Z وa–z و0–9 و+ و/ ورمز التعبئة =؛ بينما يحلّ البديل الآمن لـURL + و/ بـ- و_ لتجنب مشاكل التهريب في روابط URL.
الاستخدامات الشائعة
- تضمين الصور أو الملفات الصغيرة كـ Data URI.
- نقل البيانات الثنائية بين العميل والخادم (مثل النصوص المشفرة أو تدفقات الضغط).
- جعل النص قابلاً للطباعة لتجنب مشاكل عدم اتساق الترميز أو الأحرف غير المرئية.
الأسئلة الشائعة والنقاط المهمة
- مجموعة الأحرف: في بيئة الويب، يُفضل معالجة النص أولاً باستخدام UTF-8 (مدمج في هذه الأداة).
- آمن لـURL: يُوصى باستخدام الإصدار الآمن لـURL للمعلمات أو المسارات، مع مراعاة إزالة رموز التعبئة.
- رموز التعبئة: بعض التنفيذات تسمح بإهمال الرمز =، ويجب عند فك الترميز تكميله تلقائيًا ليصبح مضاعفًا لـ4.
- فترات السطر: قد تحتوي MIME Base64 على فترات سطر، ويمكن تفعيل خيار "تجاهل الأحرف البيضاء" أثناء فك الترميز.
كيفية تنفيذ تشفير وفك تشفير Base64 عبر لغات البرمجة
JavaScript
نص → Base64 (آمن لـUTF-8)
const encoded = btoa(unescape(encodeURIComponent(text)));
// آمن لـURL
const urlSafe = encoded.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/g, '');
فك الترميز (Base64 → نص)
// المعالجة المسبقة: يمكن استبدال -_ بـ+/
let b64 = input.replace(/-/g, '+').replace(/_/g, '/');
if (b64.length % 4 !== 0) b64 = b64.padEnd(b64.length + (4 - (b64.length % 4)), '=');
const text = decodeURIComponent(escape(atob(b64)));
PHP
ترميز (نص → Base64)
$encoded = base64_encode($text);
// آمن لـURL
$urlSafe = rtrim(strtr($encoded, '+/', '-_'), '=');
فك الترميز (Base64 → نص)
$b64 = strtr($input, '-_', '+/');
// تكميل تلقائي لـ'='
if (strlen($b64) % 4 !== 0) $b64 .= str_repeat('=', 4 - (strlen($b64) % 4));
$text = base64_decode($b64);
Python
ترميز (نص → Base64)
import base64
encoded = base64.b64encode(text.encode('utf-8')).decode('ascii')
# ترميز آمن لـURL (بدون تعبئة)
url_safe = encoded.replace('+','-').replace('/','_').rstrip('=')
فك الترميز (Base64 → نص)
import base64
def b64_decode(s: str) -> str:
s = s.replace('-','+').replace('_','/')
s += '=' * (-len(s) % 4) # تكميل تلقائي لـ'='
return base64.b64decode(s).decode('utf-8')
Go
ترميز (نص → Base64)
import (
"encoding/base64"
)
enc := base64.StdEncoding.EncodeToString([]byte(text))
// ترميز آمن لـURL (بدون تعبئة)
urlEnc := base64.RawURLEncoding.EncodeToString([]byte(text))
فك الترميز (Base64 → نص)
import (
"encoding/base64"
)
decBytes, err := base64.StdEncoding.DecodeString(enc)
// فك ترميز آمن لـURL (بدون تعبئة)
decURL, err2 := base64.RawURLEncoding.DecodeString(urlEnc)
Rust
ترميز (نص → Base64)
use base64::{engine::general_purpose, Engine as _};
let enc = general_purpose::STANDARD.encode(text.as_bytes());
// ترميز آمن لـURL (بدون تعبئة)
let url_enc = general_purpose::URL_SAFE_NO_PAD.encode(text.as_bytes());
فك الترميز (Base64 → نص)
use base64::{engine::general_purpose, Engine as _};
let dec_bytes = general_purpose::STANDARD.decode(&enc).unwrap();
let dec = String::from_utf8(dec_bytes).unwrap();
let url_dec = String::from_utf8(
general_purpose::URL_SAFE_NO_PAD.decode(&url_enc).unwrap()
).unwrap();
اعتماد Cargo: base64 = "0.22"
Java
ترميز (نص → Base64)
import java.nio.charset.StandardCharsets;
import java.util.Base64;
String enc = Base64.getEncoder().encodeToString(text.getBytes(StandardCharsets.UTF_8));
// ترميز آمن لـURL (بدون تعبئة)
String urlEnc = Base64.getUrlEncoder().withoutPadding().encodeToString(text.getBytes(StandardCharsets.UTF_8));
فك الترميز (Base64 → نص)
import java.nio.charset.StandardCharsets;
import java.util.Base64;
String dec = new String(Base64.getDecoder().decode(enc), StandardCharsets.UTF_8);
String urlDec = new String(Base64.getUrlDecoder().decode(urlEnc), StandardCharsets.UTF_8);