পাইথনে ইউআরএফ -8 ইউরাল ডিকোড


245

পাইথনে আমি নবাগত হিসাবে আমি প্রচুর সময় ব্যয় করেছি।
আমি কীভাবে কখনই এই জাতীয় URL ডিকোড করতে পারি:

example.com?title=%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D0%B2%D0%B0%D1%8F+%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D0%B0

অজগর ২.7 এটিকে একটি: example.com?title==правовая+защита

url=urllib.unquote(url.encode("utf8")) খুব কুৎসিত কিছু ফিরিয়ে দিচ্ছে

তবুও কোনও সমাধান নেই, কোনও সাহায্যের প্রশংসা করা হয়।


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

উত্তর:


398

তথ্য UTF-8 এনকোড বাইট, URL- উদ্ধৃত সঙ্গে পলান যাতে আপনি করতে চান ডিকোড সঙ্গে urllib.parse.unquote(), যা, হল UTF-8 বাইট এবং তারপর টেক্সট শতাংশ এনকোডেড তথ্য থেকে ডিকোডিং স্বচ্ছভাবে হ্যান্ডলগুলি:

from urllib.parse import unquote

url = unquote(url)

ডেমো:

>>> from urllib.parse import unquote
>>> url = 'example.com?title=%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D0%B2%D0%B0%D1%8F+%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D0%B0'
>>> unquote(url)
'example.com?title=правовая+защита'

পাইথন 2 সমতুল্য urllib.unquote(), তবে এটি একটি বাইস্টেরিং ফিরিয়ে দেয়, সুতরাং আপনাকে ম্যানুয়ালি ডিকোড করতে হবে:

from urllib import unquote

url = unquote(url).decode('utf8')

তাহলে কেন + অক্ষরটি স্ট্রিংয়ে ছেড়ে যায়? আমি ভেবেছিলাম যে% 2B হ'ল + অক্ষরটি ছিল এবং + আক্ষরিকটি ডিকোডিংয়ের সময় সরানো হয়েছিল?
অ্যালেক্সLordThorsen 22

5
@ রাউরগুলমফিনস ডেটাতে+ একটি স্থান ; আপনি এটি বিশ্লেষণ করতে বা ব্যবহার করতে চাইবেন । তবে এগুলি কেবলমাত্র ইউআরএল নয়, কেবল ক্যোরিয় স্ট্রিংয়ে উপস্থিত হওয়া উচিত। x-www-form-urlencodedurllib.parse.parse_qs()urllib.parse.unquote_plus()
মার্টিজন পিটারস

140

আপনি যদি পাইথন 3 ব্যবহার করেন তবে আপনি ব্যবহার করতে পারেন urllib.parse

url = """example.com?title=%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D0%B2%D0%B0%D1%8F+%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D0%B0"""

import urllib.parse
urllib.parse.unquote(url)

দেয়:

'example.com?title=правовая+защита'

এটি ব্যবহার করা এবং পাইথন 3.8
ক্লকার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.