URL Encoding ใน C#

  1. ลอง encode และ decode url
  2. ลอง encode ภาษาไทย
  3. ลอง encode ภาษาไทย ทีมีช่องว่าง
  4. แยกสตริงมาทำ url encoding แล้วค่อยนำกลับมารวมกัน

1.ลอง encode และ decode url

ลอง encode url ด้วย HttpUtility.UrlEncode() และ WebUtility.UrlEncode()

Add reference ชื่อ System.Web

using System;

namespace ConsoleApplication7
{
    class Program
    {
        static void Main(string[] args)
        {
            string url = "https://phaisarn.com/";
            Console.WriteLine("Url is " + url);

            // Encode
            string urlEncode1 = System.Web.HttpUtility.UrlEncode(url);
            Console.WriteLine("HttpUtility.UrlEncode is " + urlEncode1);
            string urlEncode2 = System.Net.WebUtility.UrlEncode(url);
            Console.WriteLine("WebUtility.UrlEncode  is " + urlEncode2);

            // Decode
            string urlDecode1 = System.Web.HttpUtility.UrlDecode(urlEncode1);
            Console.WriteLine("HttpUtility.UrlDecode is " + urlDecode1);
            string urlDecode2 = System.Net.WebUtility.UrlDecode(urlEncode2);
            Console.WriteLine("WebUtility.urlDecode  is " + urlDecode2);
        }
    }
}
Url is https://phaisarn.com/
HttpUtility.UrlEncode is https%3a%2f%2fphaisarn.com%2f
WebUtility.UrlEncode  is https%3A%2F%2Fphaisarn.com%2F
HttpUtility.UrlDecode is https://phaisarn.com/
WebUtility.urlDecode  is https://phaisarn.com/

จะเห็นได้ว่าถ้าเป็น HttpUtility.UrlEncode จะได้ตัวพิมพ์เล็ก แต่ถ้าใช้ WebUtility.UrlEncode จะได้ตัวพิมพ์ใหญ่

2.ลอง encode ภาษาไทย

using System;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            string text = "ไพศาล";
            Console.WriteLine("Text is " + text);

            string urlEncode1 = System.Web.HttpUtility.UrlEncode(text);
            Console.WriteLine("HttpUtility.UrlEncode is " + urlEncode1);

            string urlEncode2 = System.Net.WebUtility.UrlEncode(text);
            Console.WriteLine("WebUtility.UrlEncode  is " + urlEncode2);
        }
    }
}
Text is ไพศาล
HttpUtility.UrlEncode is %e0%b9%84%e0%b8%9e%e0%b8%a8%e0%b8%b2%e0%b8%a5
WebUtility.UrlEncode  is %E0%B9%84%E0%B8%9E%E0%B8%A8%E0%B8%B2%E0%B8%A5

3.ลอง encode ภาษาไทย ทีมีช่องว่าง

using System;

namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            string text = "ไพศาล สุธีบรรเจิด";
            Console.WriteLine("Text is " + text);

            string urlEncode1 = System.Web.HttpUtility.UrlEncode(text);
            Console.WriteLine("HttpUtility.UrlEncode is " + urlEncode1);

            string urlEncode2 = System.Net.WebUtility.UrlEncode(text);
            Console.WriteLine("WebUtility.UrlEncode  is " + urlEncode2);
        }
    }
}
Text is ไพศาล สุธีบรรเจิด
HttpUtility.UrlEncode is %e0%b9%84%e0%b8%9e%e0%b8%a8%e0%b8%b2%e0%b8%a5+%e0%b8%aa%e0%b8%b8%e0%b8%98%e0%b8%b5%e0%b8%9a%e0%b8%a3%e0%b8%a3%e0%b9%80%e0%b8%88%e0%b8%b4%e0%b8%94
WebUtility.UrlEncode is  %E0%B9%84%E0%B8%9E%E0%B8%A8%E0%B8%B2%E0%B8%A5+%E0%B8%AA%E0%B8%B8%E0%B8%98%E0%B8%B5%E0%B8%9A%E0%B8%A3%E0%B8%A3%E0%B9%80%E0%B8%88%E0%B8%B4%E0%B8%94

จะเห็นได้ว่าช่องว่างกลายเป็น + ซึ่งที่จริงควรจะเป็น %20

4.แยกสตริงมาทำ url encoding แล้วค่อยนำกลับมารวมกัน

using System;

namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            string text = "ไพศาล สุธีบรรเจิด";
            Console.WriteLine("Text is " + text);
            string[] list = text.Split(' ');

            string urlEncode1 = "";
            string urlEncode2 = "";
            for (int i = 0; i < list.Length; i++)
            {
                if (i + 1 == list.Length)
                {
                    urlEncode1 += System.Web.HttpUtility.UrlEncode(list[i]);
                    urlEncode2 += System.Net.WebUtility.UrlEncode(list[i]);
                }
                else
                {
                    urlEncode1 += System.Web.HttpUtility.UrlEncode(list[i]) + "%20";
                    urlEncode2 += System.Net.WebUtility.UrlEncode(list[i]) + "%20";
                }
            }

            Console.WriteLine("HttpUtility.UrlEncode is " + urlEncode1);
            Console.WriteLine("WebUtility.UrlEncode is  " + urlEncode2);
        }
    }
}
Text is ไพศาล สุธีบรรเจิด
HttpUtility.UrlEncode is %e0%b9%84%e0%b8%9e%e0%b8%a8%e0%b8%b2%e0%b8%a5%20%e0%b8%aa%e0%b8%b8%e0%b8%98%e0%b8%b5%e0%b8%9a%e0%b8%a3%e0%b8%a3%e0%b9%80%e0%b8%88%e0%b8%b4%e0%b8%94
WebUtility.UrlEncode is  %E0%B9%84%E0%B8%9E%E0%B8%A8%E0%B8%B2%E0%B8%A5%20%E0%B8%AA%E0%B8%B8%E0%B8%98%E0%B8%B5%E0%B8%9A%E0%B8%A3%E0%B8%A3%E0%B9%80%E0%B8%88%E0%B8%B4%E0%B8%94

ทีนี้ลอง copy url จาก browser มาวางที่ notepad เพื่อเทียบดู ก็จะเห็นคำว่า ไพศาล สุธีบรรเจิด เข้ารหัสได้ถูกต้องละ

Link