2010-11-05 27 views
4

Je suis en train de «moderniser» une application ASP classique qui utilise une base de données Access 2000.Comment puis-je convertir des données UTF-8 à partir de la publication Classic ASP Form en UCS-2 pour insertion dans SQL Server 2008 R2?

J'ai réécrit la base de données sur SQL Server 2008r2 et modifié tous les champs pour utiliser les plus récents nicar, nvarchar, ntext unicode et importé les anciennes données. J'ai également passé à IIS 7 à partir de IIS 6

L'asp classique recueille et écrit des données en utilisant UTF-8.

Maintenant, l'application affiche les données OLD correctement dans les pages Web, mais en tant que fils que je touche, c'est-à-dire: UPDATE ou INSERT les données sont corrompues. Je suppose que je dois en quelque sorte convertir les données UTF-8 de l'asp classique en UCS-2 d'une manière ou d'une autre avant d'écrire les données dans le serveur SQL.

Mais comment?

REMARQUE: il semble que le serveur sql a automatiquement converti les données utf-8 dans un format utilisable lorsqu'il a importé les données d'accès.

Répondre

6

Vous devez indiquer à SQL Server 2008 que vous envoyez des données Unicode en ajoutant un N au début de votre valeur d'insertion. donc c'est comme ça

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

Le N dit au serveur SQL de traiter le contenu comme unicode. et ne pas corrompre les données. Pour plus d'informations, voir http://support.microsoft.com/kb/239530.

code de test est ici exécuté sur 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>