ในการพัฒนาโปรแกรมไม่ว่าจะพัฒนาด้วยภาษาใดก็ตาม ทุกภาษาจะมี special characters ซึ่ง special characters บางตัวอาจจะถูกระบุให้เป็นตัวแปร หรือ ใช้อักขระพิเศษเพื่อระบุอยู่ลำดับสุดท้ายของข้อความของบรรทัด เป็นต้น   ซึ่งตรงส่วนนี้จะทำให้ประสบปัญหาในการนำ special characters ไปใช้งาน นั่นคือจะทำให้เกิด Error ทำให้โปรแกรมไม่สามารถทำงานต่อได้ ซึ่งJavaScript ก็เป็นอีกหนึ่งภาษาที่ประสบปัญหานี้ เช่น การส่ง parameter ผ่าน function ของ JavaScript โดยค่าของ parameter ที่ส่งไปเป็น special characters ทำให้เกิด Error และโปรแกรมไม่สามารถทำงานต่อได้

 

วันนี้จะขอแนะนำเทคนิคในการแก้ปัญหาดังกล่าว นั่นก็คือ การ Encoding และ Decoding ในที่นี้ผู้เขียนได้พัฒนาในรูปแบบ MVC โดยใช้ JavaScript ในการเรียก Controller จึงใช้วิธีการ Encoding กับ JavaScript และ ทางฝั่ง Controller จะใช้ C# จึงใช้ C# ในการ Decoding ค่ะ
1.วิธีการ Encoding in JavaScript ในการจะส่ง parameter ผ่านทาง function ของ JavaScript โดยข้อความนั้นมี special characters จำเป็นที่จะต้องมีการ Encoding ในที่นี้เราจะใช้ฟังก์ชัน Escape() ของ JavaScript
ตัวอย่าง Encoding in JavaScript

<script>   

  function SaveData() {

        var txtDocTitle = $('#txtDocTitle').val();


        $('#pleaseWaitDialog').modal();
        $.ajax({
            type: 'POST',
            contentType: 'application/json; charset=utf-8',
            url: "@Url.Action("SaveDataToTable", "I_EXPENSE")",
            data: "{'budgetYear':'" + valueYear +
                "' ,'docTitle':'" + escape(txtDocTitle) +
                "'}",
            success: function (data) {

            },
            error: function (data) {
                alert(data);
            }
        });
    }
      </script>

จากตัวอย่างกรณีป้อนข้อมูลที่มี special characters เช่น “I’m *&^$ special characters” เมื่อใช้ function escape(“I’m *&^$ special characters”) จะได้ผลลัพธ์ดังนี้

 ผลลัพธ์จากการเรียกใช้ escape()

I%u2019m%20*%26%5E%24%20special%20characters

หลังจากที่มีการเรียกใช้ escape() จะทำให้สามารถส่ง parameter ที่มี special characters ไปได้โดยไม่พบ Error โปรแกรมสามารถทำงานได้ปกติ เป็นอันผ่านไปหนึ่งด่านในส่วนของการเรียกใช้งาน function ของ JavaScript แต่ทว่าการที่เราจะนำข้อความที่ผ่านการ Encoding มาใช้งานไม่ได้ เนื่องจากจะไม่ถูกต้องตามความต้องการของผู้ใช้งาน จากตัวอย่างข้างต้น ผู้ใช้งานป้อนข้อมูล “I’m *&^$ special characters” สิ่งที่โปรแกรมต้องทำการบันทึกก็ต้องเป็น “I’m *&^$ special characters” ไม่ใช่ “I%u2019m%20*%26%5E%24%20special%20characters” ดังนั้นจึงจำเป็นจะต้องมีการ Decoding เพื่อให้ได้ข้อมูลที่ถูกต้อง
2.Decoding in C# เมื่อมีการ Encoding เราจำเป็นที่จะต้อง Decoding เพื่อให้ได้ข้อมูลที่ถูกต้องตามที่ผู้ใช้งานได้ป้อนข้อมูล
ตัวอย่าง Decoding in C#

      var docTitle = HttpUtility.UrlDecode(docTitle, System.Text.Encoding.Default);
       //ตรงส่วนนี้ตัวแปร docTitle จะมีค่าเท่ากับ “I’m *&^$ special characters”  ค่ะ
      

เมื่อ Decoding แล้ว ก็จะได้ข้อความที่ถูกต้องตามที่ผู้ใช้งานได้ป้อนข้อมูลและสามารถนำไปใช้งานได้อย่างถูกต้องแล้วนะคะ

 

สำหรับบทความนี้ก็ขอจบเพียงเท่านี้และหวังว่าผู้พัฒนาคงหมดกังวลในส่วนของ Special character ที่ส่งค่า parameter ผ่านทาง JavaScript ได้อย่างไม่มี error มากวนใจผู้พัฒนากันอีกแล้วนะคะ ^_^

 

 

แหล่งอ้างอิง :

https://developer.mozilla.org/th/docs/Web/JavaScript/Reference/Global_Objects/escape

http://stackoverflow.com/questions/3778165/unescape-javascripts-escape-using-c-sharp

Share the Post:

Related Posts

ทำความรู้จักกับ Outlook บนเว็บ

Post Views: 10 Outlook เป็นเครื่องมือจัดการอีเมลและปฏิทินที่ทรงพลัง ซึ่งช่วยให้คุณมีระเบียบและเพิ่มความสามารถในการทำงาน ด้วยอินเทอร์เฟซที่ใช้งานง่าย คุณสามารถจัดการกล่องขาเข้าของคุณ นัดหมาย และทำงานร่วมกับเพื่อนร่วมงานได้อย่างง่ายดาย ฟีเจอร์ที่แข็งแกร่งของ Outlook รวมถึงแม่แบบอีเมลที่ปรับแต่งได้ ความสามารถในการค้นหาขั้นสูง และการผสานรวมที่ไร้รอยต่อกับแอปพลิเคชัน Microsoft Office อื่นๆ ไม่ว่าคุณจะเป็นมืออาชีพที่ยุ่งอยู่หรือเป็นนักเรียนที่ต้องจัดการกับภารกิจหลายอย่าง Outlook

Read More

[บันทึกกันลืม] JupyterHub Authenticated with OIDC

Post Views: 37 ต่อจากตอนที่แล้ว [บันทึกกันลืม] JupyterHub ด้วย Docker คราวนี้ ถ้าต้องการให้ ยืนยันตัวตนด้วย OpenID เช่น PSU Passport เป็นต้น ก็ให้ทำดังนี้ ในไฟล์ jupyterhub_config.py ใส่

Read More