سؤال

في جافا سكريبت:

encodeURIComponent("©√") == "%C2%A9%E2%88%9A"

هل هناك يعادلها C# التطبيقات ؟ للهروب HTML حرفا كنت:

txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
    m => @"&#" + ((int)m.Value[0]).ToString() + ";");

ولكن انا غير متأكد من كيفية تحويل المباراة إلى الصحيح الست عشري أن شبيبة الاستخدامات.على سبيل المثال هذا الكود:

txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
    m => @"%" + String.Format("{0:x}", ((int)m.Value[0])));

يعود "%a9%221a" بالنسبة "©√" بدلا من "%C2%A9%E2%88%9A".يبدو أنني بحاجة إلى تقسيم السلسلة إلى بايت أو ما شابه.

تحرير:هذا هو التطبيق ويندوز فقط العناصر المتوفرة في System.Web هي: AspNetHostingPermission, AspNetHostingPermissionAttribute, ، AspNetHostingPermissionLevel.

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

المحلول

Uri.EscapeDataString أو HttpUtility.UrlEncode هو الطريق الصحيح للهروب من سلسلة من المفترض أن تكون جزء من URL.

خذ على سبيل المثال سلسلة "Stack Overflow":

  • HttpUtility.UrlEncode("Stack Overflow") --> "Stack+Overflow"

  • Uri.EscapeUriString("Stack Overflow") --> "Stack%20Overflow"

  • Uri.EscapeDataString("Stack + Overflow") --> أيضا بترميز "+" to "%2b" ---->Stack%20%2B%20%20Overflow

إلا أن الأخير هو الصحيح عند استخدامها الفعلي جزء من URL (بدلا من قيمة واحدة من سلسلة استعلام معلمات)

نصائح أخرى

HttpUtility.HtmlEncode / فك شفرة
HttpUtility.UrlEncode / فك شفرة

يمكنك إضافة إشارة إلى System.Web الجمعية إذا لم تكن متوفرة في المشروع الخاص بك

حاولت أن أفعل متوافق التناظرية من جافا سكريبت encodeURIComponent c# و بعد 4 ساعات من التجارب وجدت هذا

c# كود:

string a = "!@#$%^&*()_+ some text here али мамедов баку";
a = System.Web.HttpUtility.UrlEncode(a);
a = a.Replace("+", "%20");

والنتيجة هي:!%40%23%24%25%5e%26*()_%2b%20some%20text%20here%20%d0%b0%d0%bb%d0%b8%20%d0%bc%d0%b0%d0%bc%d0%b5%d0%b4%d0%be%d0%b2%20%d0%b1%d0%b0%d0%ba%d1%83

بعد فك ذلك مع جافا سكريبت decodeURLComponent();

سوف تحصل على هذا:!@#$%^&*()_+ بعض النص هنا али мамедов баку

شكرا لك على الاهتمام

النظام.Uri.EscapeUriString() لا يبدو أن تفعل أي شيء ، ولكن النظام.Uri.الهروبالبياناتسلسلة() عملت بالنسبة لي.

محاولة Server.UrlEncode(), أو System.Web.HttpUtility.UrlEncode() بالنسبة الحالات عندما لم يكن لديك الوصول إلى Server الكائن.يمكنك أيضا استخدام System.Uri.EscapeUriString() تجنب إضافة إشارة إلى System.Web الجمعية.

يمكنك استخدام كائن الملقم في النظام.مساحة ويب

الملقم.UrlEncode الخادم.UrlDecode الخادم.HtmlEncode و الخادم.HtmlDecode.

تحرير:ملصق وأضاف أن هذا كان تطبيق ويندوز و لا تشكل مجموعة واحدة كما كان يعتقد.البنود المذكورة أعلاه سوف تكون متاحة من هتبوتيليتي الفئة داخل النظام.ويب التي يجب إضافة مرجع إلى المشروع.

ويندوز المتجر ، لن يكون هتبوتيليتي.بدلا من ذلك لديك:

على URI, قبل'؟':

  • النظام.Uri.EscapeUriString("example.com/Stack تجاوز++?")
    • -> "example.com/Stack%20Overflow++?"

على URI اسم الاستعلام أو القيمة ، بعد'؟':

  • النظام.Uri.EscapeDataString("تجاوز سعة مكدس++")
    • -> "كومة%20Overflow%2B%2B"

عن x-www-form-urlencoded اسم الاستعلام أو القيمة ، في فترة ما بعد المحتوى:

  • System.Net.WebUtility.UrlEncode("تجاوز سعة مكدس++")
    • -> "كومة+تجاوز%2B%2B"
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top