ในการดึงข้อมูลจากเว็บไซท์อื่นๆ หรือว่าจากไฟล์ข้อมูลที่เป็นภาษาไทยนั้น ในบางครั้งจะเห็นได้ว่าเราดึงมาแล้วไม่ยอมเป็นภาษาไทย นั่นเป็นเพราะว่าเราจัดการกับเรื่องของ Encoding ของไฟล์หรือเว็บที่เราต้องการไม่ถูกต้อง
ซึ่งถ้าเราเลือกใช้งาน Encoding ที่ถูกต้องตามที่ไฟล์เก็บแล้ว เราก็จะได้ข้อมูลเป็นภาษาไทยตามที่เราต้องการได้ โดยเราสามารถเขียนทดสอบให้ดูง่ายๆดังต่อไปนี้
---------------------------------------------------------------------------------
WebClient objWebClient = new WebClient();
String strURL = http://www.thailyrics.com/lyric/thai/lyric.asp?id=4307;
String strRequest;
UTF8Encoding objUTF8 = new UTF8Encoding();
Encoding objEncoding = Encoding.GetEncoding("Windows-874");
Byte[] byteRequest = objWebClient.DownloadData(strURL);
strRequest = objEncoding.GetString(byteRequest);
---------------------------------------------------------------------------------
[อธิบายโค้ด]
1. สร้างตัวแปรอ็อบเจ็คชื่อ objWebClient จากคลาส WebClient โดยอ็อบเจ็คตัวนี้จะเอาไว้โหลดข้อมูลจากเว็บไซท์ โดยจะต้องทำการอิมพอร์ทคลาส System.Net เข้ามาด้วย
WebClient objWebClient = new WebClient();
2. สร้างตัวแปร strURL สำหรับเก็บชื่อของเว็บไซท์ที่เราต้องการจะเข้าไปดึงข้อมูลมา
String strURL = http://www.thailyrics.com/lyric/thai/lyric.asp?id=4307;
3. สร้างตัวแปร objRequest เป็บตัวแปรแบบไบท์ เพื่อรับข้อมูลที่เราจะโหลดมาจากเว็บไซท์
Byte[] byteRequest = objWebClient.DownloadData(strURL);
4. สร้างตัวแปร objEncoding และ objUTF8 ให้ตรงกับข้อมูลที่เราต้องการจะดาวว์โหลดมา โดยในที่นี้จะสร้างให้ดูเป็น utf-8 และ windows-874
UTF8Encoding objUTF8 = new UTF8Encoding();
Encoding objEncoding = Encoding.GetEncoding("Windows-874");
5. ทำการแปลงข้อมูลที่ได้จากการดาวว์โหลดและอยู่ในรูปแบบของไบท์ ให้อยู่ในรูปแบบของสตริง โดยใช้เมธอด GetString() ที่สร้างจากคลาส Encoding
strRequest = objEncoding.GetString(byteRequest);
ไม่มีความเห็น