4

我正在“现代化”一个使用 Access 2000 数据库的经典 asp 应用程序。

我在 SQL Server 2008r2 上重写了数据库并更改了所有字段以使用启用了新的 unicode 的 nchar、nvarchar、ntext 并导入了旧数据。我也从 IIS 6 切换到 IIS 7

经典的 asp 是使用 UTF-8 收集和写入数据。

现在应用程序在网页中正确显示旧数据,但正如我触摸它一样,即:更新或插入数据已损坏。我假设在将数据写入 SQL 服务器之前,我需要以某种方式将 UTF-8 数据从经典 asp 转换为 UCS-2。

但是怎么做?

注意:似乎 sql server 在从 access 导入数据时自动将 utf-8 数据转换为可用格式。

4

1 回答 1

6

您必须通过在插入值前面添加 N 来告诉 SQL Server 2008 您正在发送 unicode 数据。所以它是这样的

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

N 告诉 SQL 服务器将内容视为 Unicode。并且不会破坏数据。

有关详细信息,请参阅http://support.microsoft.com/kb/239530

这是在经典 ASP IIS 7 SQL Server 2008r2 上运行的测试代码

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

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>
于 2010-11-05T22:21:57.223 回答