Archive

Posts Tagged ‘encode’

Method Post on Code Behide with asp.net (แก้ปัญหาภาษาไทย)

March 14th, 2010 admin 1 comment

จากเนื้อหาเก่า Method Post on Code Behide with asp.net มีปัญหาในการส่งข้อมูลประเภทภาษาไทย ดังนั้นในส่วนของการ encode ให้ทำแบบนี้ วิธีนี้ได้มาจาก krucode.net ครับ

1
2
System.Text.Encoding encoder= System.Text.Encoding.GetEncoding(65001);
byte[] byteData = encoder.GetBytes(outputBuffer);

เมื่อเอามารวมกันเต็มๆก็จะเป็นแบบโค๊ดด้านล่างครับ

1
2
3
4
5
6
7
8
9
10
11
12
13
string responseString = "";
string outputBuffer = string.Format("msg={0}&senderemail={1}&sendername={2}&tel={3}",mail.Msg, mail.SenderEmail, mail.SenderName, mail.Tel);
WebClient postWebClient = new WebClient();
postWebClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
string postUrl = "http://localhost:53680/aspgod/contact_receive.aspx";
 
// encode
System.Text.Encoding encoder= System.Text.Encoding.GetEncoding(65001);
byte[] byteData = encoder.GetBytes(outputBuffer);
 
byte[] responseArray = postWebClient.UploadData(postUrl, "POST", byteData);
responseString = System.Text.Encoding.ASCII.GetString(responseArray);
Response.Write(responseString);

สำหรับคนที่ส่งสัยว่าทำไมต้องเป็นเลข 65001 ให้ตามมาดูที่ System.Text.Encoding.GetEncoding(WhatValidStrings) ได้เลยครับ

Categories: ASP.NET Tags: , ,

javascript escape() encode url ภาษาไทย

December 25th, 2009 admin No comments

นานๆจะได้ลองเล่น Ajax ดู ก็เลยเกิดปัญหาที่ต้องส่งข้อมูลจาก javascript ไปยัง page อื่นเพื่อประมวลผล จริงๆจะไม่ใช้ Ajax ก็ได้ครับ แต่อารมณ์นั้นมันอยากลองของน่ะ เอาวิธีการใช้งาน Ajax จาก inoomzaa มาเล่นดูอ่ะ คือมันก็ใช้งานได้ดีกว่า .net 2.0 แต่มามีปัญหากับ .net 1.1 คงเพราะเป็น default encoding แหละครับ แก้ไปทุกกระบวนท่าใน page ขารับแล้วก็ไม่ได้ซักครั้ง จึงต้องใช้ท่าไม้ตาย เดินไปถามหัวหน้า(พี่ตู้) จึงได้คำตอบมาว่าให้ใส่ escape() ครอบข้อมูลในขาส่งไปยัง page ด้วย เพื่อ encode ก่อน เพราะภาษาไทยมีปัญหาเรื่องนี้ตลอดเลย ใช่ว่าจะหาคำตอบได้ง่ายๆ คนไทยเวลาพบปัญหาก็ไม่โพสวิธีการแก้ปัญหา พอไปหาเว็บนอก มันก็ไม่เจอปัญหาแบบที่คนไทยเจออีก เพราะของเค้าเป็นภาษาอังกฤษ ลองดูตัวอย่างโค๊ดนะครับ

1
2
// นี่เป็น javascript ในขาส่งครับ
xmlHttp.open("get","http://localhost/WEB/UtilPage/ResponseManualMsg.aspx?msg="+escape(Criteria.value),true); // ใช้ escape เข้าช่วย
1
2
// ส่วนนี่เป็นหน้า .aspx ในขารับ ธรรมดามากมาย
Response.Write(Request["msg"]); // ไม่ต้องแปลงอะไรเลย

เสร็จสมบูรณ์อย่างสวยงาม เสียเวลาไปตั้ง 2 วันแน่ะ ไว้วันหลังจะหาวิธีการใช้ ajax ที่ดีกว่านี้มาให้ดูนะครับ

Categories: ASP.NET, Javascript Tags: , ,