اذهب إلى المحتوى
  • 0

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

MaxReve

السؤال

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

\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

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 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"

المصدر

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...