ডিকোডিং ইউআরএল এনকোডিং (শতাংশ এনকোডিং)


100

আমি ইউআরএল এনকোডিং ডিকোড করতে চাই, এটি করার জন্য কোনও বিল্ট-ইন সরঞ্জাম আছে বা কেউ আমাকে একটি sedকোড সরবরাহ করতে পারে যা এটি করবে?

আমি ইউনিক্স.স্ট্যাকেক্সেঞ্জঞ্জ ডট কম এবং ইন্টারনেটের মাধ্যমে কিছুটা অনুসন্ধান করেছিলাম তবে ইউআরএল এনকোডিং ডিকোড করার জন্য কোনও কমান্ড লাইন সরঞ্জাম পেলাম না।

আমি যা করতে চাই তা কেবল স্থানটিতে কোনও txtফাইল সম্পাদনা করা যাতে:

  • %21 হয়ে !
  • %23 হয়ে #
  • %24 হয়ে $
  • %26 হয়ে &
  • %27 হয়ে '
  • %28 হয়ে (
  • %29 হয়ে )

ইত্যাদি।


উত্তর:


107

এই পাইথনকে এমন একটি লাইনার পাওয়া গেছে যা আপনি যা চান তা করেন:

$ alias urldecode='python -c "import sys, urllib as ul; \
    print ul.unquote_plus(sys.argv[1])"'

$ alias urlencode='python -c "import sys, urllib as ul; \
    print ul.quote_plus(sys.argv[1])"'

উদাহরণ

$ urldecode 'q+werty%3D%2F%3B'
q werty=/;

$ urlencode 'q werty=/;'
q+werty%3D%2F%3B

তথ্যসূত্র


আমি এটি খুব দেরিতে জানি, তবে স্থান সম্পাদনা করে আমি কি এটির কোনও উপায় করতে পারি?
ডিসপ্লেনেম

@ ডিসপ্লেনাম - আমার কাছে নতুন কিউয়ের মতো শোনাচ্ছে। আমি এটি জিজ্ঞাসা, এবং এটি একটি রেফারেন্স চাই।
slm

15
স্ট্রিমিং:cat your_lovely_file.csv| python -c "import sys, urllib as ul; [sys.stdout.write(ul.quote_plus(l)) for l in sys.stdin]"
kirill_igum

5
দ্রষ্টব্য, এটি একটি পাইথন 2; pythonডিফল্টরূপে 3 সিস্টেমে ত্রুটি ঘটবে। সাহায্যে পরিবর্তন pythonকরা হচ্ছে python2
ইভান কোলমিচেক

4
জন্য python3আপনি ব্যবহার করতে পারেন import urllib.parse as ulপরিবর্তে import urllib as ul
ইবিটি

61

কিন্তু

নিম্নলিখিত কমান্ড লাইন চেষ্টা করুন:

$ sed 's@+@ @g;s@%@\\x@g' file | xargs -0 printf "%b"

বা নিম্নলিখিত বিকল্প ব্যবহার করে echo -e:

$ sed -e's/%\([0-9A-F][0-9A-F]\)/\\\\\x\1/g' file | xargs echo -e

দ্রষ্টব্য: উপরের সিনট্যাক্সটি +স্পেসে রূপান্তর করতে পারে না এবং সমস্ত নতুনলাইন খেতে পারে।


আপনি এটির নাম হিসাবে সংজ্ঞা দিতে পারেন এবং এটি আপনার শেল আরসি ফাইলগুলিতে যুক্ত করতে পারেন :

$ alias urldecode='sed "s@+@ @g;s@%@\\\\x@g" | xargs -0 printf "%b"'

তারপরে প্রতিবার যখন আপনার প্রয়োজন হবে তখন কেবল সাথে যান:

$ echo "http%3A%2F%2Fwww" | urldecode
http://www

সজোরে আঘাত

স্ক্রিপ্ট করার সময়, আপনি নিম্নলিখিত সিনট্যাক্সটি ব্যবহার করতে পারেন:

input="http%3A%2F%2Fwww"
decoded=$(printf '%b' "${input//%/\\x}")

তবে উপরের সিনট্যাক্সগুলি প্লাসগুলি ( +) সঠিকভাবে পরিচালনা করবে না , সুতরাং আপনাকে সেগুলির মাধ্যমে স্পেস দিয়ে প্রতিস্থাপন করতে হবে sed

আপনি নিম্নলিখিত urlencode()এবং urldecode()ফাংশনগুলি ব্যবহার করতে পারেন :

urlencode() {
    # urlencode <string>
    local length="${#1}"
    for (( i = 0; i < length; i++ )); do
        local c="${1:i:1}"
        case $c in
            [a-zA-Z0-9.~_-]) printf "$c" ;;
            *) printf '%%%02X' "'$c" ;;
        esac
    done
}

urldecode() {
    # urldecode <string>

    local url_encoded="${1//+/ }"
    printf '%b' "${url_encoded//%/\\x}"
}

নোট করুন যে উপরে urldecode()ধরে নেওয়া হয়েছে যে ডেটাতে কোনও ব্যাকস্ল্যাশ নেই।

এখানে অনুরূপ জোয়েলের সংস্করণ পাওয়া গেছে: https://github.com/sixarm/urldecode.sh


বাশ + এক্সএক্সডি

xxdসরঞ্জাম সহ বাশ ফাংশন :

urlencode() {
  local length="${#1}"
  for (( i = 0; i < length; i++ )); do
    local c="${1:i:1}"
    case $c in
      [a-zA-Z0-9.~_-]) printf "$c" ;;
    *) printf "$c" | xxd -p -c1 | while read x;do printf "%%%s" "$x";done
  esac
done
}

পাওয়া cdown এর সারকথা ফাইল , এছাড়াও এ Stackoverflow


পিএইচপি

পিএইচপি ব্যবহার করে আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:

$ echo oil+and+gas | php -r 'echo urldecode(fgets(STDIN));' // Or: php://stdin
oil and gas

বা শুধু:

php -r 'echo urldecode("oil+and+gas");'

-Rএকাধিক লাইন ইনপুট জন্য ব্যবহার করুন।


পার্ল

পার্ল আপনি ব্যবহার করতে পারেন URI::Escape

decoded_url=$(perl -MURI::Escape -e 'print uri_unescape($ARGV[0])' "$encoded_url")

অথবা একটি ফাইল প্রক্রিয়া করতে:

perl -i -MURI::Escape -e 'print uri_unescape($ARGV[0])' file

awk

আনন সমাধান চেষ্টা করুন :

awk -niord '{printf RT?$0chr("0x"substr(RT,2)):$0}' RS=%..

দ্রষ্টব্য: প্যারামিটার -nগনুহ নির্দিষ্ট awk

দেখুন: পাঠাতে urldecode তে awk মুদ্রণযন্ত্র ব্যবহার করা

ফাইলের নাম ডিকোডিং

আপনার যদি ফাইলের নামগুলি থেকে url এনকোডিং অপসারণ করতে deurlnameহয় তবে renameutils(যেমন deurlname *.*) থেকে সরঞ্জামটি ব্যবহার করুন ।

আরো দেখুন:


সম্পর্কিত:


1
awk: এটি যেহেতু একটি লাইব্রেরি ফাংশনটি ব্যবহার করে, chr()একটি উচ্চ সম্ভাবনা রয়েছে যা এটি সম্পূর্ণরূপে জিএনইউ অ্যাডব্লিক ( gawk) এ কাজ করবে । তবে, এই ক্ষেত্রে সেখানে POSIX জন্য কমই কোনো সমতুল্য হতে হবে awk, কারণ -nবিকল্প (অ দশমিক আর্গুমেন্ট যার ফলে) IS একটি গনুহ awkবিশিষ্টতা।
সিনট্যাক্সেরর

আপনার প্রথম sedকোডটি আমাকে xargs: argument line too long2164 লাইনযুক্ত ফাইলের জন্য দেয় ।
স্পারহাক

2
জড়িত আপনার সমাধানগুলিতে এই বিষয়টি বিবেচনা করা printfহবে না যে ইউআরএলটিতে পলায়নের শতাংশ চিহ্ন থাকতে পারে %25। আপনি এগুলি অন্য শতাংশের মতো চিহ্ন সহ প্রিন্টফের জন্য এড়িয়ে চলা ছাড়াই প্রিন্টফ এ পাস করেন %%
জোছ

1
বাশ সংস্করণটির local LC_ALL=Cশীর্ষে প্রয়োজন , অন্যথায় সমস্ত প্রশস্ত অক্ষর (যেমন জাপানি, চাইনিজ, ইত্যাদি) সঠিকভাবে বাইটে বিভক্ত হয় না।
ফার্নোস্ট


18

পাইথন স্ট্যান্ডার্ড লাইব্রেরিতে এর জন্য একটি অন্তর্নির্মিত ফাংশন রয়েছে। পাইথন 2 এ, এটি urllib.unquote

decoded_url=$(python2 -c 'import sys, urllib; print urllib.unquote(sys.argv[1])' "$encoded_url")

অথবা একটি ফাইল প্রক্রিয়া করতে:

python2 -c 'import sys, urllib; print urllib.unquote(sys.stdin.read())' <file >file.new &&
mv -f file.new file

পাইথন 3 এ, এটি urllib.parse.unquote

decoded_url=$(python3 -c 'import sys, urllib.parse; print(urllib.parse.unquote(sys.argv[1]))' "$encoded_url")

অথবা একটি ফাইল প্রক্রিয়া করতে:

python3 -c 'import sys, urllib; print(urllib.parse.unquote(sys.stdin.read()))' <file >file.new &&
mv -f file.new file

পার্ল আপনি ব্যবহার করতে পারেন URI::Escape

decoded_url=$(perl -MURI::Escape -e 'print uri_unescape($ARGV[0])' "$encoded_url")

অথবা একটি ফাইল প্রক্রিয়া করতে:

perl -i -MURI::Escape -e 'print uri_unescape($ARGV[0])' file

আপনি যদি পসিক্স পোর্টেবল সরঞ্জামগুলিতে লেগে থাকতে চান তবে এটি বিশ্রী কারণ একমাত্র গুরুতর প্রার্থী বিশ্রী, যা হেক্সাডেসিমাল সংখ্যাকে পার্স করে না। ব্যাসিবক্স সহ সাধারণ অজক বাস্তবায়ন সহ উদাহরণগুলির জন্য অর্ডিকোড পাঠ্যকে অর্জকড প্রিন্টফ ব্যবহার করে দেখুন ।


10

আপনি যদি সাধারণ-মনের sedআদেশটি ব্যবহার করতে চান তবে নিম্নলিখিতগুলি ব্যবহার করুন:

sed -e 's/%21/!/g' -e 's/%23/#/g' -e 's/%24/$/g' -e 's/%26/\&/g' -e "s/%27/'/g" -e 's/%28/(/g' -e 's/%29/)/g'

তবে এটি (যেমন sedscript) এর মতো স্ক্রিপ্ট তৈরি করা আরও সুবিধাজনক :

s/%21/!/g
s/%23/#/g
s/%24/$/g
s/%26/\&/g
s/%27/'/g
s/%28/(/g
s/%29/)/g

তারপরে রান করুন sed -f sedscript < old > newযা আপনার ইচ্ছামত আউটপুট আসবে।


স্বাচ্ছন্দ্যের জন্য, প্যাকেজে urlencodeসরাসরি কমান্ডটি পাওয়া gridsite-clientsযায় ( sudo apt-get install gridsite-clientsউবুন্টু / ডেবিয়ান সিস্টেমে) থেকে ইনস্টল করা যেতে পারে ।

NAME এর

    urlencode - ইউআরএল-এনকোডড ফর্ম থেকে বা স্ট্রিংগুলিকে রূপান্তর করুন
সংক্ষিপ্তসার

    urlencode [-m|-d] string [string ...]

বর্ণনা

    urlencode আরএফসি 1738 অনুযায়ী স্ট্রিংগুলি এনকোড করে।

    এটি হ'ল অক্ষর A- Z a- z 0- 9 . _এবং -অশোধিত মাধ্যমে পাস করা হয়, তবে অন্যান্য সমস্ত অক্ষর% HH হিসাবে প্রতিনিধিত্ব করা হয়, যেখানে এইচ এইচটি তাদের দুই-অঙ্কের উচ্চ-অক্ষরের হেক্সাডেসিমেল এএসসিআই উপস্থাপনা। উদাহরণস্বরূপ, ইউআরএল http://www.gridpp.ac.uk/হয়ে যায়http%3A%2F%2Fwww.gridpp.ac.uk%2F

    urlencodeকমান্ড লাইনে প্রদত্ত সমস্ত স্ট্রিংয়ে প্রতিটি অক্ষরকে রূপান্তর করে। যদি একাধিক স্ট্রিং দেওয়া থাকে তবে এগুলি রূপান্তরকরণের আগে স্পেসগুলি পৃথক করে সম্মতিযুক্ত।

পছন্দসমূহ
    -m
      সম্পূর্ণ রূপান্তর পরিবর্তে গ্রিডসাইটটি "হালকা ইউআরএল এনকোডিং" করুন যাতে জেড এজেড 0-9। = - _ @ এবং / অশোধিত মাধ্যমে পাস করা হয় এর ফলে কিছুটা বেশি মানব-পঠনযোগ্য স্ট্রিংগুলির ফলাফল হয় তবে অ্যাপ্লিকেশনটি অবশ্যই কোনও স্ল্যাশ দ্বারা নির্দেশিত ডিরেক্টরিগুলি তৈরি বা অনুকরণের জন্য প্রস্তুত থাকতে হবে।
    -d
      জন্য RFC 1738.% এইচ এবং% HH স্ট্রিং রূপান্তরিত হয় এবং অন্যান্য অক্ষরের অপরিবর্তিত মাধ্যমে গৃহীত হয়, ব্যতিক্রম যে সঙ্গে অনুযায়ী এনকোডিং বদলে URL টি-ডিকোডিং না, +স্থান রূপান্তরিত হয়।

ডিকোডিং URL এর উদাহরণ:

$ urlencode -d "http%3a%2f%2funix.stackexchange.com%2f"
http://unix.stackexchange.com/

$ urlencode -d "Example: %21, %22, . . . , %29 etc"
Example: !, ", . . . , ) etc


4
এটি একটি খারাপ সমাধান, কারণ এর জন্য প্রতিটি চরিত্রের হার্ডকোডিং প্রয়োজন। এই কোডটি আপনার কোড দ্বারা উদাহরণস্বরূপ ব্যবহৃত হয় প্রায়শই ব্যবহৃত %20পালানোর ক্রম অনুপস্থিত ।
উপচে পড়া

@ ওভারেভ আমি সবেমাত্র সংশোধন করেছি
পান্ড্য

এছাড়াও, আপনি কি করতে পারেন ডাবল-চেক করতে s/%26/&/gপারেন। (আমি এটি ঠিক করেছি।)
জি-ম্যান

9

পার্ল ওয়ান লাইনার:

$ perl -pe 's/\%(\w\w)/chr hex $1/ge'

উদাহরণ:

$ echo '%21%22' |  perl -pe 's/\%(\w\w)/chr hex $1/ge'
!"

1
এই উত্তরটি আকর্ষণীয় যখন আপনি পার্ল মডিউলগুলি ইনস্টল করার বিষয়ে ডিল করতে চান না।
শ্রীধর সারনোবাত

1
কেবলমাত্র ম্যাকস-এ আমার জন্য মার্জিতভাবে কাজ করেছে one
কিউস


7

আমি এই থ্রেডে সেরা উত্তরের বিষয়ে মন্তব্য করতে পারি না , সুতরাং এটি আমার।

ব্যক্তিগতভাবে, আমি ইউআরএল এনকোডিং এবং ডিকোডিংয়ের জন্য এই উপকরণগুলি ব্যবহার করি:

alias urlencode='python -c "import urllib, sys; print urllib.quote(  sys.argv[1] if len(sys.argv) > 1 else sys.stdin.read()[0:-1])"'

alias urldecode='python -c "import urllib, sys; print urllib.unquote(sys.argv[1] if len(sys.argv) > 1 else sys.stdin.read()[0:-1])"'

উভয় কমান্ডই আপনাকে ডেটা রূপান্তর করতে, কমান্ড লাইন আর্গুমেন্ট হিসাবে পাস করার বা স্ট্যান্ডার্ড ইনপুট থেকে পড়ার অনুমতি দেয় , কারণ উভয় ওয়ান-লাইনার কমান্ড লাইন আর্গুমেন্ট (এমনকি খালিও) আছে কিনা তা পরীক্ষা করে এবং সেগুলি প্রক্রিয়া করে বা অন্যথায় স্ট্যান্ডার্ড ইনপুট পড়তে পারে।


আপডেট 2017-05-23 (স্ল্যাশ এনকোডিং)

@ বেভারের মন্তব্যের জবাবে।

আপনার যদি স্ল্যাশকে এনকোড করা দরকার হয় তবে কেবল উদ্ধৃতি ফাংশনে একটি খালি দ্বিতীয় যুক্তি যুক্ত করুন, তারপরে স্ল্যাশটিও এনকোড হবে।

সুতরাং, পরিশেষে urlencode ওরফে মধ্যে ব্যাশ ভালো দেখায়:

alias urlencode='python -c "import urllib, sys; print urllib.quote(sys.argv[1] if len(sys.argv) > 1 else sys.stdin.read()[0:-1], \"\")"'

উদাহরণ

$ urlencode "Проба пера/Pen test"
%D0%9F%D1%80%D0%BE%D0%B1%D0%B0%20%D0%BF%D0%B5%D1%80%D0%B0%2FPen%20test

$ echo "Проба пера/Pen test" | urlencode
%D0%9F%D1%80%D0%BE%D0%B1%D0%B0%20%D0%BF%D0%B5%D1%80%D0%B0%2FPen%20test

$ urldecode %D0%9F%D1%80%D0%BE%D0%B1%D0%B0%20%D0%BF%D0%B5%D1%80%D0%B0%2FPen%20test
Проба пера/Pen test

$ echo "%D0%9F%D1%80%D0%BE%D0%B1%D0%B0%20%D0%BF%D0%B5%D1%80%D0%B0%2FPen%20test" | urldecode
Проба пера/Pen test

$ urlencode "Проба пера/Pen test" | urldecode
Проба пера/Pen test

$ echo "Проба пера/Pen test" | urlencode | urldecode
Проба пера/Pen test

1
স্ল্যাশগুলি এনকোড করে না।
বেলা

@ বেভোর: উদাহরণ?
ডিআইজি এমবিএল

Urlencode "Проба пера" -> ফলাফলে স্ল্যাশ যুক্ত করুন: স্ল্যাশ এনকোড করা হয়নি।

1
@ বেভোর: আপনি ঠিক বলেছেন। আপনার মন্তব্যের জন্য ধন্যবাদ. আমি এতে আপনার মন্তব্য প্রতিবিম্বিত করতে আমার উত্তরও পরিবর্তন করব।
ডিআইজি এমবিএল

4

এবং অন্য পার্ল পদ্ধতির:

#!/usr/bin/env perl
use URI::Encode;
my $uri     = URI::Encode->new( { encode_reserved => 0 } );
while (<>) {

    print $uri->decode($_)
}

আপনাকে URI::Encodeমডিউলটি ইনস্টল করতে হবে । আমার ডেবিয়ান, আমি সহজভাবে চালাতে পারে

sudo apt-get install liburi-encode-perl

তারপরে, আমি উপরের স্ক্রিপ্টটি একটি পরীক্ষার ফাইলটিতে চালিয়েছি:

http://foo%21asd%23asd%24%26asd%27asd%28asd%29

ফলাফলটি ছিল (আমি স্ক্রিপ্টটি সংরক্ষণ করেছি foo.pl):

$ ./foo.pl
http://foo!asd#asd$&asd'asd(asd)

3

(বেশিরভাগ পসিক্স) শেলের একটি উত্তর:

$ input='%21%22'
$ printf "`printf "%s\n" "$input" | sed -e 's/+/ /g' -e 's/%\(..\)/\\\\x\1/g'`"
!"

ব্যাখ্যা:

  • -e 's/+/ /gপ্রতিটি +স্থানকে রূপান্তরিত করে (ইউআরএল-এনকোড আদর্শ হিসাবে বর্ণিত)
  • -e 's/%\(..\)/\\\\x\1/g'প্রতিটি %XXমধ্যে রূপান্তর \\xXX\নিয়ম উদ্ধৃত করে একটি মুছে ফেলা হবে লক্ষ্য করুন ।
  • অভ্যন্তরীণ প্রিন্টফটি কেবল সেডে ইনপুট দেওয়ার জন্য রয়েছে। আমরা এটি অন্য যে কোনও প্রক্রিয়া দ্বারা প্রতিস্থাপন করতে পারি
  • বাহ্যিক প্রিন্টফ \\xXXক্রমগুলি এবং প্রদর্শন ফলাফল ব্যাখ্যা করে ।

সম্পাদনা:

যেহেতু %সর্বদা ইউআরএল-তে ব্যাখ্যা করা উচিত, তাই এই উত্তরটি সহজ করা সম্ভব। যোগ করার সাথে সাথে, আমি ব্যাককোটেরxargs পরিবর্তে ( @ জোছকে ধন্যবাদ) ব্যবহার করা পরিষ্কার বলে মনে করি ।

$ input='%21%22+%25'
$ printf "%s\n" "$input" | sed -e 's/+/ /g; s/%/\\x/g' | xargs -0 printf
!" %

দুর্ভাগ্যক্রমে, (@ জোসচের নজরে হিসাবে) এই সমাধানগুলির কোনওটিই পসিক্সের সাথে সামঞ্জস্যপূর্ণ না কারণ প্যাসিক্সে \xপালানোর ক্রম সংজ্ঞায়িত করা হয়নি।


U&L এ আপনাকে স্বাগতম। সম্ভবত আপনি এই উত্তরটি ব্যাখ্যা করতে পারেন এবং এটি কীভাবে কাজ করে। আমরা সাধারণত কোড স্নিপেট নয়, বিশদ সহ আমাদের উত্তরগুলি দীর্ঘ ফর্ম হিসাবে পছন্দ করি।
slm

আমি এই উত্তরটি সত্যিই পছন্দ করি কারণ এটি ব্যাপক, পোর্টেবল এবং এর জন্য পার্ল বা পাইথনের মতো অতিরিক্ত ভারী বাহ্যিক প্রোগ্রামের প্রয়োজন হয় না। আমার জন্য ভাল কাজ করে।
স্টিভ উইলস

1
দুর্দান্ত সমাধান। এমনকি ছোট অথবা আরও স্মার্ট: ... | sed 's/+/ /g;s/%\(..\)/\\\\x\1/g'-eবিকল্প আসলে এখানে বাদ দেওয়া যেতে পারে ...
বাক্যগঠনের ত্রুটি

1
@ জোসচ আপনি ঠিক বলেছেন, printfএকটি অন্তর্নির্মিত dashএবং এটি পালানোকে স্বীকৃতি দেয় না \x। এটিকে কাজ করতে আপনি /usr/bin/printfপরিবর্তে ব্যবহার করতে পারেন printf। সাধারণত, আপনি ব্যবহার করতে সক্ষম হওয়া উচিত command printf, তবে এটি যেমনটি করা উচিত তেমন কাজ করে না বলে মনে হয়। এটি অন্তর্নির্মিত ব্যবহার চালিয়ে যায়।
জেরুমে পাউিলার

1
@ জেজ প্রকৃতপক্ষে \xপালানোর পক্ষে সমর্থন পসিক্সের অংশ নয়: pubs.opengroup.org/onlinepubs/9699919799/utilities/printf.html আমার পরীক্ষার সময় আমি আরও একটি সমস্যা দেখেছি। আপনি আপনার ..রেজেক্সটি প্রতিস্থাপন করতে চাইতে পারেন [a-zA-Z0-9][a-zA-Z0-9]কারণ অন্যথায় '%%%' এর মতো ইনপুট ব্যর্থ হবে। s/%/%%/gপ্রিন্টফের শতাংশ শতাংশ এড়াতে নিশ্চিত করার জন্য আমি শেষেও যুক্ত করেছি ।
জোছ

1

শেল-শুধুমাত্র:

$ x='a%20%25%e3%81%82';printf "${x//\%/\\x}"
a %あ

বিকল্প হিসাবে বিবেচনা করা থেকে কোনও ড্যাশ দিয়ে শুরু হওয়া যুক্তিগুলি যুক্ত করুন --বা %bপ্রতিরোধ করুন।

Zsh এ শেষ ${x//%/a}যোগ aকরে তবে ${x//\%/a}প্রতিস্থাপন %করে a


1

এখানে অন্য স্ক্রিপ্টের প্রাসঙ্গিক বিটগুলি রয়েছে (যে আমি নির্লজ্জভাবে আমার ইউটিউব ডটকম ডাউনলোড করে অন্য একটি উত্তর থেকে স্ক্রিপ্ট ডাউনলোড করেছি ) আমি এর আগে লিখেছি। এটি ব্যবহার করে sedএবং একটি শেল একটি কার্যকরী urldecode তৈরি করতে।

set \! \" \# \$ \% \& \' \( \) \* \ \+ \, \/ \: \; \= \? \@ \[ \]
for c do set "$@" "'$c" "$c"; shift; done
curl -s "$url" | sed 's/\\u0026/\&/g;'"$(
    printf 's/%%%X/\\%s/g;' "$@"
)"

আমি এটির বিস্তৃত শপথ করব না - এবং আসলে আমি এতে সন্দেহ করি - তবে এটি ইউটিউবকে অবশ্যই যথেষ্ট পরিমাণে পরিচালিত করেছে।



0

রুবি ব্যবহার করে অন্য একটি সমাধান (গৃহীত অজগর উত্তরটি আমার পক্ষে কাজ করে না)

alias urldecode='ruby -e "require \"cgi\"; puts CGI.unescape(ARGV[0])"'
alias urlencode='ruby -e "require \"cgi\"; puts CGI.escape(ARGV[0])"'

উদাহরণ

$ urldecode 'q+werty%3D%2F%3B'
q werty=/;

$ urlencode 'q werty=/;'
q+werty%3D%2F%3B
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.