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

السؤال

نشر

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

\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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...