Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

क्लासिक ASP, MySQL या ODBC UTF8 एन्कोडिंग

आपके पास इस मैपिंग और Windows-1252 wiki article का एक अंश :

यहाँ करने के लिए चीज़ें हैं:

  1. हार्ड-कोडेड टेक्स्ट होने की संभावना के विरुद्ध UTF-8 (बीओएम के बिना) एन्कोडेड फ़ाइलों का उपयोग करें। (✔ पहले ही किया जा चुका है)

  2. सर्वर-साइड पर ASP के साथ या क्लाइंट-साइड पर मेटा टैग के साथ प्रतिक्रिया वर्णसेट के लिए UTF-8 निर्दिष्ट करें। (✔ पहले ही किया जा चुका है)

  3. MySQL सर्वर को बताएं कि आपके आदेश वर्णसेट utf-8 में हैं, और आप utf-8 एन्कोडेड परिणाम सेट की अपेक्षा करते हैं। कनेक्शन स्ट्रिंग में एक प्रारंभिक विवरण जोड़ें:...;stmt=SET NAMES 'utf8';...

  4. Response.CodePage को 1252 पर सेट करें।

मैंने निम्नलिखित स्क्रिप्ट का परीक्षण किया है और यह एक आकर्षण की तरह काम करती है।

डीडीएल: http://sqlfiddle.com/#!8/c2c35/1

एएसपी:

<%@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>

अंतिम टिप्पणी के रूप में:

जब आपको डेटाबेस से प्राप्त स्ट्रिंग्स पर html एन्कोडिंग लागू करने की आवश्यकता होती है, तो आपको सर्वर का उपयोग नहीं करना चाहिए। प्रतिक्रिया के कारण अब HTMLएनकोड करें। सर्वर-साइड पर कोडपेज 1252 है और सर्वर के बाद से। HTMLEncode निर्भर संदर्भ कोडपेज है, इससे अस्पष्ट आउटपुट होंगे।
इसलिए मामले को संभालने के लिए आपको अपना स्वयं का html एन्कोडर लिखना होगा।

Function MyOwnHTMLEncode(ByVal str)
    str = Replace(str, "&", "&amp;")
    str = Replace(str, "<", "&lt;")
    str = Replace(str, ">", "&gt;")
    str = Replace(str, """", "&quot;")
    MyOwnHTMLEncode = str
End Function
'Response.Write MyOwnHTMLEncode(rs("myfield").value)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP mysql_connect सेट प्रतीक्षा_टाइमआउट

  2. जुपिटर नोटबुक w/Python3 के माध्यम से एक MySQL डेटाबेस तक पहुंच

  3. MYSQL में एक सबस्ट्रिंग की अंतिम घटना को कैसे बदलें?

  4. निर्धारित करें कि क्या दो नाम एक दूसरे के करीब हैं

  5. क्या किसी ने यह पता लगाया है कि Amazon RDS रीड रेप्लिकेशंस को कैसे स्केल किया जाए?