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

السؤال

نشر

لدي سلسلة نصية معينة فيها محارف خاصة ومسافات، وأرغب بتحويلها ضمن الترميز URI encode، فهل هنالك حزمة معيّنة يجب علي استخدامها في node.js لتحقيق ذلك؟ أم يوجد بعض التوابع المدعومة لذلك بشكل افتراضي؟

Recommended Posts

  • 1
نشر

لدينا 3 طرق. الأولى استخدام الدالة encodeURI لترميز ال URL:

var uri = "my test.asp?name=ståle&car=saab"; // مثال
var res = encodeURI(uri); 

لكن هذه الدالة لاتقوم بترميز المحارف التالية: A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #
الطريقة الثانية هي استخدام الدالة encodeURIComponent :

var uri = "https://example.com/my test.asp?name=ståle&car=saab"; //مثال
var res = encodeURIComponent(uri); 

هذه الطريقة تقوم أيضاً بترميز المحارف / ? : @ & = + $ # التي لاترمزها الطريقة السابقة. لكنها لاتقوم بترميز المحارف التالية:
A-Z a-z 0-9 - _ . ! ~ * ' ( )
مثال آخر:

// encodes characters such as ?,=,/,&,:
console.log(`?x=${encodeURIComponent('test2!?')}`);
// expected output: "?x=test%3F"
console.log(`?x=${encodeURIComponent('шеллы')}`);
// expected output: "?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B"

كما يمكنك استخدام escape لكن تم إلغاؤها بدءاً من النسخة 1.5.

  • 0
نشر

يمكنك استخدام الوظيفة encodeURIComponent(str)  لفعل ذلك, فمثلا لدينا المتغير التالي ويحمل قيمة نصية بداخله

var myUrl = "http://example.com/index.html?param=1&anotherParam=2";

لدينا متغير آخر يحمل قيمة نصية كالتالي

var myOtherUrl = "http://example.com/index.html?url=" + myUrl;

يمكنك استخدام الوظيفة كالتالي

var myOtherUrl = "http://example.com/index.html?url=" + encodeURIComponent(myUrl);

 

  • 0
نشر

يمكنك استخدام الحزمة  querystring لتنفيذ المطلوب كما في المثال التالي

var querystring = require("querystring");
var result = querystring.stringify({query: "SELECT name FROM user WHERE uid = me()"});
console.log(result);
#prints 'query=SELECT%20name%20FROM%20user%20WHERE%20uid%20%3D%20me()'

أما في حالة كنت تريد ترميز ال query فقط يمكنك استخدام الحزمة  uri-js

var URI = require("uri-js");
undefined
> URI.serialize(URI.parse("http://example.org/rose?rose=rose"))

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...