Comment convertir données UTF-8 de postclassique asp Formulaire à UCS-2 pour l'insertion dans SQL Server 2008 R2?

StackOverflow https://stackoverflow.com/questions/4110167

Question

Je suis en train de « moderniser » une application classique qui utilise asp une base de données Access 2000.

Je réécrit la base de données sur SQL Server 2008R2 et a changé tous les champs d'utiliser la plus récente unicode permis nchar, nvarchar, ntext et importé les anciennes données. J'ai aussi passé à IIS 7 d'IIS 6

asp classique collecte et l'écriture de données en utilisant UTF-8.

L'application affiche les données ANCIENS correctement dans les pages Web, mais en tant que fils que je le touche-à-dire: UPDATE ou INSERT les données est d'obtenir endommagé. Je suppose que je dois convertir en quelque sorte les données UTF-8 de l'asp classique UCS-2 en quelque sorte avant d'écrire les données dans le serveur SQL.

Mais comment?

NOTE:. Il semble que l'auto du serveur SQL converti les données utf-8 dans un format utilisable quand il a importé les données d'accès

Était-ce utile?

La solution

Vous devez dire SQL Server 2008 que vous envoyez des données unicode en ajoutant un N à l'avant de votre valeur d'insertion. de sorte que son comme celui-ci

strTest = "Служба мгновенных сообщений"
strSQL = "INSERT INTO tblTest (test) VALUES (N'"&strTest&"')"

Le N dit serveur SQL pour traiter le contenu comme Unicode. et ne le pas corrompu des données.

Voir http://support.microsoft.com/kb/239530 pour plus d'infos.

Voici le code de test sur Exécuter ASP classique IIS 7 SQL Server 2008R2

CREATE TABLE [dbo].[tblTest](
    [test] [nvarchar](255) NULL,
    [id] [int] IDENTITY(1,1) NOT NULL

page ASP

<%

Response.CodePage = 65001
Response.CharSet = "utf-8" 

strTest = Request("Test")

Set cnn = Server.CreateObject("ADODB.Connection")
strConnectionString = Application("DBConnStr")
cnn.Open strConnectionString



strSQL = "INSERT INTO tblTest (test) VALUES (N'"&strTest&"')"
Set rsData = cnn.Execute(strSQL)

%>
 <html xmlns="http://www.w3.org/1999/xhtml" charset="utf-8">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <title></title>

</head 
<body>
    <form action="test.asp" method="post" name="form1" >
        <br/><br/><br/><center>
<table border="1">
    <tr><td><b>Test SQL Write</b> </td></tr>
    <tr><td><input type="text" name="Test" style="width: 142px" Value="<%=strtext%>" /></td></tr>
    <tr><td><input type="Submit" value="Submit" name "Submit" /></td></tr></table> </center>
</form>


</body>
</html>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top