• 0

كيف أُرمز سلسلة نصية للحصول على رابط في روبي؟

أحتاج إلى ترميز هذه السلسلة النصية:

\x12\x34\x56\x78\x9a\xbc\xde\xf1\x23\x45\x67\x89\xab\xcd\xef\x12\x34\x56\x78\x9a

لتصبح مثل التالي:

%124Vx%9A%BC%DE%F1%23Eg%89%AB%CD%EF%124Vx%9A

قمت بتجربة عدة محاولات للترميز لكنها لم تنجح، فما هي الطريقة الصحيحة لفعل ذلك؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

هنالك طريقتين لحل هذه المشكلة حسب إصدار روبي المثبت على جهازك، فإذا كنت تستخدم الإصدارات الجديدة للروبي فيمكنك في هذه الحالة استخدام تابع escape من مكتبة cgi لترميز السلسلة النصية كما في المثال التالي:

str = "\x12\x34\x56\x78\x9a\xbc\xde\xf1\x23\x45\x67\x89\xab\xcd\xef\x12\x34\x56\x78\x9a"
require 'cgi'
CGI.escape(str)
# => "%124Vx%9A%BC%DE%F1%23Eg%89%AB%CD%EF%124Vx%9A"

وهنالك طريقة أخرى تعمل على الإصدارات الأقدم من روبي (تم إزالتها في الإصدارات الجديدة) وهي عن طريق استخدام تابع encode من وحدة open-uri للترميز كما في المثال التالي:

require 'open-uri'
str = "\x12\x34\x56\x78\x9a\xbc\xde\xf1\x23\x45\x67\x89\xab\xcd\xef\x12\x34\x56\x78\x9a".force_encoding('ASCII-8BIT')
puts URI::encode(str)

كما يمكنك استخدام ERB::Util.url_encode للترميز كما في المثال التالي:

>> ERB::Util.url_encode("foo/bar? baz&")
=> "foo%2Fbar%3F%20baz%26"

المصدر

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن