Chr*_*ick 4 sql-server ucs2 utf-8 asp-classic
我正在使用Access 2000数据库"现代化"经典的asp应用程序.
我在SQL Server 2008r2上重写了数据库并更改了所有字段以使用更新的unicode启用nchar,nvarchar,ntext并导入旧数据.我还从IIS 6切换到IIS 7
经典的asp使用UTF-8收集和写入数据.
现在,应用程序在网页中正确显示OLD数据,但是当我触摸它时,即:更新或插入数据正在被破坏.我假设在将数据写入SQL服务器之前,我需要以某种方式将UTF-8数据从经典的asp转换为UCS-2.
但是怎么样?
注意:似乎sql server在从access访问导入数据时自动将utf-8数据转换为可用格式.
您必须通过在插入值的前面添加N来告诉SQL Server 2008您正在发送unicode数据.就像这样
strTest = "?????? ?????????? ?????????"
strSQL = "INSERT INTO tblTest (test) VALUES (N'"&strTest&"')"
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4660 次 |
| 最近记录: |