¿Cómo convierto datos UTF-8 de formulario ASP clásico posterior a UCS-2 para la inserción en SQL Server 2008 R2?

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

Pregunta

Estoy en el proceso de "modernización" una aplicación ASP clásico que utiliza una base de datos Access 2000.

Me volvió a escribir la base de datos en SQL Server 2008R2 y cambió todos los campos a utilizar la nueva Unicode nchar, nvarchar, ntext e importado los datos antiguos. También me pasa a IIS 7 de IIS 6

El ASP clásico está recogiendo y escribiendo datos utilizando UTF-8.

Ahora la aplicación muestra los datos antiguos correctamente en las páginas web, sino como hijo como lo toco es decir: actualizar o insertar los datos se está dañado. Asumo que necesito para convertir de alguna manera las UTF 8 datos de la ASP clásico a UCS-2 de alguna manera antes de escribir los datos en el servidor SQL.

Pero, ¿cómo?

NOTA:. Parece que el servidor SQL automático convierte los datos UTF-8 en un formato utilizable cuando se importan los datos de acceso

¿Fue útil?

Solución

Tienes que decirle a SQL Server 2008 que está enviando los datos Unicode mediante la adición de una N en la parte delantera de su valor de inserción. así es como este

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

La N indica el servidor SQL para considerar el contenido como Unicode. y no corromper los datos.

http://support.microsoft.com/kb/239530 para más información.

Aquí está el código de prueba Ejecutar en ASP clásico IIS 7 SQL Server 2008R2

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

página 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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top