Anda memiliki peluang untuk huruf Slovenia menurut pemetaan dan kutipan dari artikel wiki Windows-1252 :
Berikut hal-hal yang harus dilakukan:
-
Gunakan file yang disandikan UTF-8 (tanpa BOM) terhadap kemungkinan berisi teks hard-coded. (✔ sudah selesai)
-
Tentukan UTF-8 untuk rangkaian karakter respons dengan ASP di sisi server atau dengan tag meta di sisi klien. (✔ sudah selesai)
-
Beri tahu Server MySQL bahwa perintah Anda ada di charset utf-8, dan Anda mengharapkan set hasil yang disandikan utf-8. Tambahkan pernyataan awal ke string koneksi :
...;stmt=SET NAMES 'utf8';...
-
Setel Response.CodePage ke 1252.
Saya telah menguji skrip berikut dan berfungsi dengan sangat baik.
DDL: http://sqlfiddle.com/#!8/c2c35/1
ASP:
<%@Language=VBScript%>
<%
Option Explicit
Response.CodePage = 1252
Response.LCID = 1060
Response.Charset = "utf-8"
Const adCmdText = 1, adVarChar = 200, adParamInput = 1, adLockOptimistic = 3
Dim Connection
Set Connection = Server.CreateObject("Adodb.Connection")
Connection.Open "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=myDb;User=myUsr;Password=myPwd;stmt=SET NAMES 'utf8';"
If Request.Form("name").Count = 1 And Len(Request.Form("name")) Then 'add new
Dim rsAdd
Set rsAdd = Server.CreateObject("Adodb.Recordset")
rsAdd.Open "names", Connection, ,adLockOptimistic
rsAdd.AddNew
rsAdd("name").Value = Left(Request.Form("name"), 255)
rsAdd.Update
rsAdd.Close
Set rsAdd = Nothing
End If
Dim Command
Set Command = Server.CreateObject("Adodb.Command")
Command.CommandType = adCmdText
Command.CommandText = "Select name From `names` Order By id Desc"
If Request.QueryString("name").Count = 1 And Len(Request.QueryString("name")) Then
Command.CommandText = "Select name From `names` Where name = ? Order By id Desc"
Command.Parameters.Append Command.CreateParameter(, adVarChar, adParamInput, 255, Left(Request.QueryString("name"), 255))
End If
Set Command.ActiveConnection = Connection
With Command.Execute
While Not .Eof
Response.Write "<a href=""?name=" & .Fields("name").Value & """>" & .Fields("name").Value & "</a><br />"
.MoveNext
Wend
.Close
End With
Set Command.ActiveConnection = Nothing
Set Command = Nothing
Connection.Close
%><hr />
<a href="?">SHOW ALL</a><hr />
<form method="post" action="<%=Request.ServerVariables("SCRIPT_NAME")%>">
Name : <input type="text" name="name" maxlength="255" /> <input type="submit" value="Add" />
</form>
Sebagai komentar terakhir:
Ketika Anda perlu menerapkan pengkodean html ke string yang diambil dari database, Anda tidak boleh menggunakan Server.HTMLEncode lagi karena Response.Codepage adalah 1252 di sisi server dan karena Server.HTMLEncode bergantung pada halaman kode konteks, ini akan menyebabkan keluaran omong kosong.
Jadi, Anda harus menulis encoder html Anda sendiri untuk menangani kasus ini.
Function MyOwnHTMLEncode(ByVal str)
str = Replace(str, "&", "&")
str = Replace(str, "<", "<")
str = Replace(str, ">", ">")
str = Replace(str, """", """)
MyOwnHTMLEncode = str
End Function
'Response.Write MyOwnHTMLEncode(rs("myfield").value)