Skip to content
ترميز / فك ترميز URL
Tools

ترميز / فك ترميز URL

جديد

رمّز النص بترميز النسبة المئوية أو فُكّه، وحلِّل سلاسل الاستعلام، كل ذلك داخل متصفحك.

Special characters reference
Character Encoded (%XX) Notes
space %20 Also encoded as + in HTML form query strings
& %26 Query param separator — encode in values
= %3D Key-value separator in query strings
? %3F Marks the start of a query string
# %23 Fragment identifier
/ %2F Path separator
: %3A Protocol / port separator
@ %40 Username delimiter in URLs
+ %2B Literal plus sign (+ in query string = space)
% %25 Percent itself — encode to avoid ambiguity
%E2%82%AC UTF-8 multi-byte (3 bytes)
© %C2%A9 UTF-8 multi-byte (2 bytes)
Per-language code snippets

Copy-ready snippets for JavaScript, Python, C#, PowerShell, Java and Go.

JavaScript / Node.js
// Encode a single query value (recommended)
const encoded = encodeURIComponent('hello world & co.');
// → 'hello%20world%20%26%20co.'

// Decode
const decoded = decodeURIComponent('hello%20world%20%26%20co.');
// → 'hello world & co.'

// Encode a full URL (leaves : / ? & # intact)
const safeUrl = encodeURI('https://example.com/search?q=hello world');
// → 'https://example.com/search?q=hello%20world'
Python
from urllib.parse import quote, unquote, urlencode

# Encode a single value (%20 for spaces)
encoded = quote('hello world & co.')
# → 'hello%20world%20%26%20co.'

# Decode
decoded = unquote('hello%20world%20%26%20co.')
# → 'hello world & co.'

# Encode a query dict (uses + for spaces — form encoding)
qs = urlencode({'q': 'hello world', 'page': '2'})
# → 'q=hello+world&page=2'

# quote_plus encodes spaces as + (match HTML form encoding)
plus = quote_plus('hello world')
# → 'hello+world'
C# / .NET
// Encode a single value (spaces → %20)
string encoded = Uri.EscapeDataString("hello world & co.");
// → "hello%20world%20%26%20co."

// Decode
string decoded = Uri.UnescapeDataString("hello%20world%20%26%20co.");
// → "hello world & co."

// Older System.Web API (spaces → +, form encoding):
// HttpUtility.UrlEncode("hello world") → "hello+world"
PowerShell
# .NET method — works in PS 5+ and PowerShell Core
$encoded = [Uri]::EscapeDataString('hello world & co.')
# → 'hello%20world%20%26%20co.'

$decoded = [Uri]::UnescapeDataString('hello%20world%20%26%20co.')
# → 'hello world & co.'

# Alternate via System.Web (Desktop PS only):
Add-Type -AssemblyName System.Web
$enc2 = [System.Web.HttpUtility]::UrlEncode('hello world')
# → 'hello+world'
Java
import java.net.URLEncoder;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;

// Encode (URLEncoder uses + for spaces — form encoding)
String encoded = URLEncoder.encode("hello world & co.", StandardCharsets.UTF_8);
// → "hello+world+%26+co."

// Decode
String decoded = URLDecoder.decode("hello+world+%26+co.", StandardCharsets.UTF_8);
// → "hello world & co."
Go
import "net/url"

// QueryEscape: spaces become +
encoded := url.QueryEscape("hello world & co.")
// → "hello+world+%26+co."

decoded, err := url.QueryUnescape("hello+world+%26+co.")
// → "hello world & co.", nil

// PathEscape: spaces become %20
pathSafe := url.PathEscape("hello world & co.")
// → "hello%20world%20&%20co."

Runs entirely in your browser. Nothing is uploaded.

مشفِّر ومفكِّك URL مجاني على الإنترنت

يحوِّل هذا المشفِّر والمفكِّك لعناوين URL النصوص إلى صيغة الترميز المئوي — أو يعكس العملية — مباشرةً في متصفحك. الصق نصك، واختر التشفير أو فك التشفير، وحدِّد قواعد المكوِّن أو URI الكامل، وستُحدَّث النتيجة فوراً. لا يُرسَل أي شيء؛ كل عملية تُنفَّذ كلياً في متصفحك باستخدام وظائف JavaScript المدمجة ذاتها التي يستخدمها كودك.

الترميز المئوي أمر لا مفر منه في تطوير الويب. يجب تهريب المسافات وعلامات الضم والمساواة والمحارف غير ASCII قبل أن تتمكن من الوجود بأمان في عنوان URL. سواء كنت تبني طلب API أو تصحِّح رابط تتبع أو تقرأ سجل خادم، تتعامل هذه الأداة مع جميع الحالات الخاصة — بما فيها محارف UTF-8 متعددة البايت والتسلسلات المشوَّهة وإشكالية المسافة بين + و%20.

encodeURIComponent مقابل encodeURI — أي قاعدة تستخدم؟

encodeURIComponent هو الخيار الصحيح لقيم الاستعلام الفردية أو مقاطع المسار أو أي سلسلة تدرجها في عنوان URL. يُشفِّر تقريباً كل محرف خاص — بما فيها ? و& و= و/ و# و: — حتى لا تتمكن القيمة من كسر بنية عنوان URL. مثال: 'hello world & page=2' يصبح 'hello%20world%20%26%20page%3D2'.

encodeURI مُصمَّم لترميز عنوان URL كامل دون كسره. يُبقي المحارف البنيوية سليمةً (: / ? # &) حتى يظل عنوان URL يعمل، بينما يُشفِّر المسافات والمحارف غير ASCII. عند الشك، فضِّل قواعد المكوِّن لأي قيمة تدرجها — هذا هو الإعداد الآمن الافتراضي في كل إطار عمل ويب تقريباً.

المسافات بين %20 و+ — الفرق في ترميز النماذج

ثمة طريقتان صحيحتان لترميز مسافة في عنوان URL. في مسارات URL (الجزء قبل ?)، يشترط RFC 3986 استخدام %20. في سلاسل استعلام نماذج HTML، يُشفِّر تنسيق application/x-www-form-urlencoded القديم المسافات بـ+ للإيجاز التاريخي — وهذا ما تُرسله المتصفحات عند إرسال نموذج عبر GET حتى الآن.

كلاهما يعني 'مسافة'، لكن في سياقه الخاص فقط. + في مسار URL هو علامة جمع حرفية؛ + في سلسلة استعلام هو مسافة. يجب ترميز علامة الجمع الحرفية في قيمة الاستعلام بـ%2B وإلا ستُقرأ خطأً. يتعامل زر + كمسافة في وضع فك التشفير مع الإدخال المُشفَّر بالنموذج باستبدال + بمسافة قبل تشغيل decodeURIComponent.

المقارنة مع CyberChef وأدوات ترميز URL الأخرى

CyberChef (من GCHQ) قوي لكنه مُصمَّم حول مفهوم خط أنابيب 'الوصفات' — تربط عمليات متعددة معاً. لمجرد ترميز أو فك ترميز URL، لا يزال يتعين عليك البحث عن العملية وسحبها إلى الوصفة ثم معالجة المدخل. إنه ممتاز للتحويلات المعقدة؛ لكنه أبطأ مما يلزم للترميز/فك الترميز السريع.

الأدوات الأخرى عبر الإنترنت كـurldecoder.org بسيطة لكنها تعرض إعلانات وتتطلب إعادة تحميل كاملة للصفحة عند كل عملية ولا توفر مقتطفات كود لكل لغة. تُحدِّث هذه الأداة النتيجة فوراً عند كل ضغطة مفتاح، وتتعامل مع قواعد المكوِّن وURI الكامل، وتتضمن جدول مرجع للمحارف المُشفَّرة الشائعة، وتعرض كوداً جاهزاً للنسخ بـJavaScript وPython وC# وPowerShell وJava وGo.

مرجع سريع للمحارف الخاصة

أكثر المحارف ترميزاً في تطوير الويب: مسافة → %20 (أو + في سلاسل الاستعلام)، & → %26، = → %3D، ? → %3F، # → %23، / → %2F، : → %3A، @ → %40، + → %2B، % → %25. تتوسع محارف UTF-8 متعددة البايت إلى تسلسلات متعددة: € → %E2%82%AC، é → %C3%A9.

المحارف التي لا تُشفَّر أبداً هي المجموعة غير المحجوزة: الحروف A–Z وa–z والأرقام 0–9 والرموز الأربعة - _ . ~. كل ما عدا ذلك — بما فيه كل محرف غير ASCII — يجب ترميزه مئوياً في عنوان URL المتوافق مع المعايير.

ترميز URL في JavaScript وPython وC# وPowerShell وJava

كل لغة رئيسية تمتلك دالة مدمجة لهذا الغرض. في JavaScript / Node.js: encodeURIComponent(str) وdecodeURIComponent(str) — لا حاجة لأي استيرادات. في Python: urllib.parse.quote(str) وunquote(str)؛ وurlencode(dict) لسلسلة استعلام كاملة. في C#: Uri.EscapeDataString(str) وUri.UnescapeDataString(str) من مساحة الاسم System. في PowerShell: [Uri]::EscapeDataString(str)، متاح في PS 5+ وPowerShell Core. في Java: URLEncoder.encode(str, StandardCharsets.UTF_8).

تتضمن لوحة المقتطفات لكل لغة كوداً جاهزاً للنسخ بـJavaScript وPython وC# وPowerShell وJava وGo حتى تتمكن من إضافة الاستدعاء الصحيح إلى مشروعك فوراً — مع ملاحظات حول سلوك المسافة + مقابل %20 للمكتبة القياسية لكل لغة.

خصوصية 100% — يعمل أيضاً دون اتصال بالإنترنت

تستخدم كل عملية ترميز وفك ترميز الوظائف المدمجة في متصفحك فقط: encodeURIComponent وdecodeURIComponent وencodeURI وdecodeURI. لا يُرسَل أي نص إلى أي خادم ولا يُخزَّن ولا يُسجَّل — ولا حتى أسماء النطاقات في عناوين URL التي تلصقها. بمجرد تحميل الصفحة، افصل الجهاز عن الإنترنت وستستمر في العمل بشكل مثالي. احفظها في المفضلة واستخدمها متى احتجت إلى ترميز أو فك ترميز أو فحص عنوان URL.

Frequently asked questions

ما هو ترميز URL؟

ترميز URL (المعروف أيضاً بالترميز المئوي) يحوِّل المحارف غير الآمنة في عنوان URL إلى علامة % متبوعةً برقمين ست عشريين. مثلاً، المسافة تصبح %20، وعلامة الضم تصبح %26، والمربع # يصبح %23. يضمن هذا أن يكون كل عنوان URL صالحاً في أي متصفح أو رأس HTTP أو خادم بغض النظر عن مجموعة المحارف المستخدمة.

ماذا يعني %20 في ترميز URL؟

%20 هو التمثيل المُشفَّر مئوياً لمحرف المسافة. الرقم 20 هو القيمة الست عشرية لـASCII 32 (المسافة). لذا فإن عنوان URL 'hello%20world' يُفكَّك إلى 'hello world'. في سلاسل استعلام نماذج HTML قد ترى + بدلاً من %20 للمسافات — كلاهما يعني المسافة في سلاسل الاستعلام لكن ليس في مسارات URL.

ما الفرق بين encodeURI وencodeURIComponent؟

encodeURIComponent مخصص لقيم الاستعلام الفردية أو مقاطع المسار — يُشفِّر تقريباً كل شيء بما فيه : / ? # & = حتى لا تكسر القيمة بنية عنوان URL. أما encodeURI فمخصص لعنوان URL كامل — يُبقي المحارف البنيوية كـ: / ? & # سليمةً حتى يستمر عنوان URL في العمل. كقاعدة، استخدم دائماً encodeURIComponent للقيم الفردية التي تدرجها في رابط.

كيف أُشفِّر عنوان URL في JavaScript؟

استخدم encodeURIComponent() للقيم الفردية: encodeURIComponent('hello world & co.') يعيد 'hello%20world%20%26%20co.'. لعكس العملية استخدم decodeURIComponent(). لعنوان URL كامل استخدم encodeURI() / decodeURI() — تتخطيان المحارف البنيوية. كلاهما مدمج في كل متصفح وNode.js دون حاجة لاستيرادات.

لماذا تكون المسافة %20 أحياناً و+ أحياناً أخرى؟

في مسارات URL (قبل ?)، يجب أن تكون المسافات %20 وفقاً لـRFC 3986. في سلاسل الاستعلام، يُشفِّر التنسيق القديم application/x-www-form-urlencoded المستخدم من نماذج HTML المسافاتِ بـ+ للإيجاز التاريخي. كلاهما يعني 'مسافة' لكن في سياقه فقط — يجب ترميز + الحرفية في قيمة استعلام بـ%2B وإلا ستُفهَم خطأً كمسافة.

هل التشفير وفك التشفير عبر الإنترنت آمنان؟

نعم — هذه الأداة محلية 100%. كل عملية تُنفَّذ في متصفحك باستخدام وظائف JavaScript المدمجة. نصك لا يُرسَل إلى أي خادم ولا يُخزَّن ولا يُسجَّل. يمكنك حتى الذهاب دون اتصال بعد تحميل الصفحة وستستمر في العمل. هذا مهم بشكل خاص عند ترميز مفاتيح API أو بيانات الاعتماد أو الرموز المميزة.

هل تعمل الأداة دون اتصال بالإنترنت؟

نعم. جميع العمليات المنطقية تُنفَّذ في متصفحك دون أي طلبات شبكة. بمجرد تحميل الصفحة، يمكنك تعطيل Wi-Fi أو بيانات الجوال وستستمر في العمل بشكل مثالي — مفيد لترميز مفاتيح API الحساسة أو بيانات الاعتماد دون أن يغادر أي نص جهازك.