Как преобразовать данные UTF-8 из классической формы ASP в UCS-2 для вставки в SQL Server 2008 R2?
-
29-09-2019 - |
Вопрос
Я нахожусь в процессе «модернизации» классического приложения ASP, которое использует базу данных Access 2000.
Я переписал базу данных на SQL Server 2008R2 и изменил все поля для использования более нового Unicode включен NCHAR, NVARCHAR, NTEXT и импортировал старые данные. Я также перешел на IIS 7 из IIS 6
Классический ASP собирает и записывает данные с использованием UTF-8.
Теперь приложение правильно показывает старые данные на веб -страницах, но, как я прикасаюсь к нему: обновление или вставка данных повреждено. Я предполагаю, что мне нужно каким-то образом преобразовать данные UTF-8 из классического ASP в UCS-2, прежде чем я напишу данные в SQL Server.
Но как?
Примечание. Похоже, что SQL Server Auto преобразовал данные UTF-8 в используемый формат, когда он импортировал данные из доступа.
Решение
Вы должны сообщить SQL Server 2008, что отправляете в данные Unicode, добавив N в переднюю часть вашего значения вставки. Так что это как это
strTest = "Служба мгновенных сообщений"
strSQL = "INSERT INTO tblTest (test) VALUES (N'"&strTest&"')"
N сообщает SQL Server рассматривать содержимое как 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 Page
<%
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>