سؤال

باستخدام Python أحتاج إلى نقل البيانات المشفرة غير المصنوعة UTF-8 (على وجه التحديد Shift-JIS) إلى عنوان URL عبر سلسلة الاستعلام. كيف يجب أن أقوم بنقل البيانات؟ اقتبسه؟ تشفير في UTF-8؟

شكرا

هل كانت مفيدة؟

المحلول

المعلمات سلسلة الاستعلام هي البايت. في حين أن iRi-to-uri وأحرف غير مكتوب غير ASCII سيعمل عادة UTF-8، لا يوجد شيء يجبرك على إرسال أو تلقي المعلمات الخاصة بك في هذا الترميز.

لذلك بالنسبة إلى SHIFT-JIS (عادة CP932 عادة، تمديد Windows لهذا الترميز):

foo= u'\u65E5\u672C\u8A9E' # 日本語
url= 'http://www.example.jp/something?foo='+urllib.quote(foo.encode('cp932'))

في بيثون 3 أنت تفعل ذلك في وظيفة الاقتباس نفسها:

foo= '\u65E5\u672C\u8A9E'
url= 'http://www.example.jp/something?foo='+urllib.parse.quote(foo, encoding= 'cp932')

نصائح أخرى

لا أعرف ما علاقة Unicode بهذا، لأن سلسلة الاستعلام هي سلسلة من البايتات. يمكنك استخدام وظائف الاقتباس في Urllib. إلى اقتباس سلاسل واضحة بحيث يمكن تمريرها داخل سلاسل الاستعلام.

بواسطة "سلسلة الاستعلام" «أنت تعني http الحصول على مثل http:/{URL}?data=XYZ?

لديك ترميز ما هي البيانات التي لديك عبر base64.b64encode استخدام -_ كحرف بديل ليكون URL آمن كخيار. يرى هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top