URL Encode & Decode
உரையை URL-இல் பாதுகாப்பாகச் சேர்க்கும்படி மாற்றலாம், அல்லது %20 போன்ற வரிசைகளை மீண்டும் படிக்கக்கூடிய எழுத்துக்களாக மாற்றலாம். இந்தக் கருவி உங்கள் உலாவியின் சொந்த encodeURIComponent, encodeURI, decodeURIComponent ஆகியவற்றைப் பயன்படுத்துகிறது, query அளவுருக்களை அட்டவணையில் காட்டுகிறது, எதையும் சர்வருக்கு அனுப்புவதில்லை.
0 எழுத்துகள் · 0 சொற்கள் · 0 வரிகள்
0 எழுத்துகள் · 0 சொற்கள் · 0 வரிகள்
முழுவதும் இந்த உலாவி தாவலிலேயே இயங்குகிறது. உங்கள் உரை பதிவேற்றப்படவோ சேமிக்கப்படவோ மாட்டாது.
ஒவ்வொரு செயல்பாடும் எதை escape செய்கிறது
உலாவியின் செயல்பாடுகளாலேயே கணக்கிடப்பட்டது. encodeURIComponent எழுத்துகள், இலக்கங்கள் மற்றும் இந்தக் குறிகளை மாற்றாது: ! ' ( ) * - . _ ~
| எழுத்து | encodeURIComponent | encodeURI |
|---|---|---|
(இடைவெளி) | %20 | %20 |
! | ! | ! |
" | %22 | %22 |
# | %23 | # |
$ | %24 | $ |
% | %25 | %25 |
& | %26 | & |
' | ' | ' |
( | ( | ( |
) | ) | ) |
* | * | * |
+ | %2B | + |
, | %2C | , |
/ | %2F | / |
: | %3A | : |
; | %3B | ; |
= | %3D | = |
? | %3F | ? |
@ | %40 | @ |
[ | %5B | %5B |
] | %5D | %5D |
{ | %7B | %7B |
} | %7D | %7D |
| | %7C | %7C |
\ | %5C | %5C |
^ | %5E | %5E |
` | %60 | %60 |
< | %3C | %3C |
> | %3E | %3E |
~ | ~ | ~ |
- | - | - |
_ | _ | _ |
. | . | . |
é | %C3%A9 | %C3%A9 |
€ | %E2%82%AC | %E2%82%AC |
😀 | %F0%9F%98%80 | %F0%9F%98%80 |
Percent-encoding மற்றும் RFC 3986-இன் ஒதுக்கப்பட்ட எழுத்துக்கள்
ஒரு URL-இல் குறிப்பிட்ட ASCII எழுத்துகள் மட்டுமே இடம்பெறலாம். URI தொடரமைப்புக்கான 2005 விவரக்குறிப்பான RFC 3986 அவற்றை இரு குழுக்களாகப் பிரிக்கிறது. A–Z, a–z, 0–9 மற்றும் - . _ ~ ஆகிய நான்கு குறிகள் அடங்கிய ஒதுக்கப்படாத (unreserved) எழுத்துகளை என்கோட் செய்ய வேண்டியதில்லை. ஒதுக்கப்பட்ட (reserved) எழுத்துகளுக்கு குறிப்பிட்ட பணிகள் உண்டு: : / ? # [ ] @ போன்ற பொது பிரிப்பான்கள் scheme, host, path, query, fragment ஆகியவற்றைப் பிரிக்கின்றன; ! $ & ' ( ) * + , ; = போன்ற துணைப் பிரிப்பான்கள் அவற்றுக்குள் உள்ள உருப்படிகளைப் பிரிக்கின்றன, query string-இல் & மற்றும் = செய்வது போல. மற்ற அனைத்தும், மேலும் சாதாரண தரவாகப் பயன்படுத்தப்படும் எந்த ஒதுக்கப்பட்ட எழுத்தும், சதவீத என்கோடிங் (percent-encoding) செய்யப்பட வேண்டும்.
சதவீத என்கோடிங் ஒரு பைட்டை % மற்றும் அதைத் தொடரும் இரண்டு ஹெக்சாடெசிமல் இலக்கங்களாக எழுதுகிறது. உரை முதலில் UTF-8 ஆக மாற்றப்படுவதால், இடைவெளி %20 ஆகும், é (இரண்டு பைட்கள்) %C3%A9 ஆகும், ஒரு எமோஜி நான்கு %XX குழுக்களாகும். அதனால்தான் "café & bar" தேடல் இணைப்பில் caf%C3%A9%20%26%20bar என வருகிறது: & என்கோட் செய்யப்படுவதால் சர்வர் அதை புதிய அளவுருவின் தொடக்கமாகப் படிக்காது.
encodeURIComponent, encodeURI மற்றும் decode செய்தல்
query மதிப்பு, path பகுதி, அளவுருவாக அனுப்பப்படும் redirect URL போன்ற ஒற்றைப் பகுதிக்கு encodeURIComponent சரியான தேர்வு. ஒதுக்கப்படாத எழுத்துகள் மற்றும் வரலாற்றுக் காரணங்களால் JavaScript விட்டுவிடும் ! ' ( ) * தவிர மற்ற அனைத்தையும் இது escape செய்கிறது. encodeURI (முழு URL) உள்ளீடு ஏற்கனவே முழுமையான முகவரி என எடுத்துக்கொண்டு ஒதுக்கப்பட்ட எழுத்துகளை அப்படியே வைக்கும்; எனவே https://example.com/a b?q=1-இல் இடைவெளி மட்டுமே என்கோட் ஆகும். அளவுரு மதிப்புக்கு encodeURI பயன்படுத்துவது வழக்கமான பிழை: மதிப்புக்குள் உள்ள & அல்லது # அப்படியே இருந்து URL-ஐ உடைக்கும்.
Decode இரண்டில் எதையும் தலைகீழாக்கும். GET மூலம் அனுப்பப்படும் HTML படிவங்கள் பழைய application/x-www-form-urlencoded வடிவத்தைப் பயன்படுத்துகின்றன; அதில் இடைவெளி %20 அல்ல, + ஆக எழுதப்படும். அவற்றுக்கு Treat + as a space தேர்வை டிக் செய்து வைக்கவும்; தொலைபேசி எண்ணில் போல உண்மையான கூட்டல் குறி முக்கியம் என்றால் டிக்கை நீக்கவும். உள்ளீட்டில் இரண்டு hex இலக்கங்கள் தொடராத % இருந்தாலோ, செல்லுபடியாகாத UTF-8 பைட்கள் இருந்தாலோ, ஊகிக்காமல் தெளிவான செய்தியுடன் டிகோடிங் தோல்வியடையும். உரையில் query string இருந்தால், அதன் அளவுருக்கள் கருவிக்குக் கீழே அட்டவணையில் டிகோட் செய்யப்பட்டுத் தோன்றும். URL-களில் பைனரி தரவுக்கு Base64url வழக்கமான மாற்றாகும்.
அடிக்கடி கேட்கப்படும் கேள்விகள்
- URL-இல் இடைவெளி %20 ஆக இருக்க வேண்டுமா, + குறியாக இருக்க வேண்டுமா?
- path-களிலும் RFC 3986 படியும் இடைவெளி %20 ஆகும். + வடிவம் HTML படிவங்கள் என்கோட் செய்யும் முறையிலான query string-க்குள் மட்டுமே இடைவெளியைக் குறிக்கும்; எனவே எல்லா இடத்திலும் %20 பாதுகாப்பான தேர்வு.
- என் URL-இல் %2520 ஏன் வந்தது?
- அது இருமுறை என்கோட் செய்யப்பட்டுள்ளது. முதல் முறை இடைவெளி %20 ஆனது, இரண்டாவது முறை % குறியே %25 ஆக என்கோட் ஆனது. கூடுதல் அடுக்கை நீக்க ஒருமுறை டிகோட் செய்யவும்; உங்கள் குறியீட்டில் ஒரே இடத்தில் மட்டும் மதிப்புகளை என்கோட் செய்யவும்.
- எந்த எழுத்துக்களுக்கு ஒருபோதும் percent-encoding தேவையில்லை?
- RFC 3986-இன் ஒதுக்கப்படாத தொகுப்பு: இரு வகையிலும் A முதல் Z வரையிலான எழுத்துகள், 0 முதல் 9 வரையிலான இலக்கங்கள், மற்றும் ஹைஃபன், புள்ளி, அடிக்கோடு, டில்டே.
- ஆங்கிலம் அல்லாத எழுத்துக்களை encode செய்யாமல் URL-இல் வைக்கலாமா?
- உலாவிகள் அவற்றைக் காட்டும், ஆனால் நெட்வொர்க்கில் path அல்லது query-இல் உள்ள ஒவ்வொரு ASCII அல்லாத எழுத்தும் சதவீத என்கோட் செய்யப்பட்ட UTF-8 ஆக அனுப்பப்படும். டொமைன் பெயர்கள் தனி முறையான Punycode-ஐப் பயன்படுத்தி அவற்றை xn-- லேபிள்களாக மாற்றும்.
- decode செய்யும்போது தவறான வரிசை (malformed sequence) என்று ஏன் காட்டுகிறது?
- உரையில் இரண்டு ஹெக்சாடெசிமல் இலக்கங்கள் தொடராத % உள்ளது, உதாரணமாக "100%", அல்லது பைட்கள் செல்லாத UTF-8 ஆக டிகோட் ஆகின்றன. டிகோட் செய்வதற்கு முன் தனியாக உள்ள % குறிகளை %25 ஆக என்கோட் செய்யவும்.