Wednesday, August 25, 2010

ปัญหาการส่งภาษาไทยไปกับลิงค์ แล้วเป็นภาษาต่างดาวใน ie8



เจอปัญหาการส่งภาษาไทย ไปกับลิงค์ ใน IE version8 รายละเอียด เครื่องมือ/การกำหนดค่า ดังนี้

*****************************************************************************************

Database : Microsoft SQL Server ซึ่งตารางข้อมูล Collation เป็น Thai_CI_AS
Program : Visual studio express 2008
ภาษาในการเขียน : ASP.NET (vb)

ในหน้า .aspx กำหนดใช้ charset=windows-874

*****************************************************************************************


ใน IE6 จะไม่มีปัญหาแต่อย่างใด แต่ถ้าใช้ ie8 ก็จะเป็นแบบดังภาพ




วิธีแก้ไข ก็คือ แปลง encode ให้เป็น UTF8 ก่อนส่ง โดยใช้ code ดังนี้
code:

HttpUtility.UrlEncode("สตริงที่ต้องการแปลง", System.Text.Encoding.GetEncoding("UTF-8"))


ก็เลยเขียนฟังก์ชั่นไว้ใช้ใน App_code เพื่อสะดวกในการใช้งาน



code:

Option Explicit On
Option Strict On

Imports Microsoft.VisualBasic
Imports System.Data
Imports System.Data.SqlClient
Imports System.Globalization.CultureInfo
Imports System.Web.Configuration
Imports System.Globalization
Imports System.Web
Imports System.Text
Imports System.Web.UI

Public Module setfont
Public Function utf8(ByVal strthaiget As String) As String
Dim strthaigeted As String = HttpUtility.UrlEncode(strthaiget, System.Text.Encoding.GetEncoding("UTF-8"))
Return strthaigeted
End Function
End Module


เวลาจะใช้งานก็แค่ เพิ่มฟังก์ชั่น setfont.utf8 คลุม string ที่เราต้องการจะส่งไปกับลิงค์


--------------------------------------------


ปล.

ในบางหน้าเพจ การเปิดลิงค์โดยใช้การคลิกเมาส์ซ้าย open new tab ก็จะเกิดปัญหาภาษาไทยเป็นต่างดาวแบบนี้ แต่พอเปิดแบบธรรมดา (เปิดในหน้าเดียวกัน) ก็ไม่มีปัญหาอะไร ??? ....





1 comment:

  1. สุดยอดขอบคุณครับผมหาวิธีแก้มาเป็นวันเต็มๆ แก้ได้แล้วครับ

    ReplyDelete

แวะเข้ามา ทักทายกันบ้างก็ได้ค่ะ