将 unicode 像 ✅ 从表单存储到数据库

Storing unicode like ✅ from form to db

我无法将 unicode 字符从表单获取到数据库

webdesigner/seo-guy 想要使用 unicode 字符 ✅(9989,在绿色框中显示为白色复选标记。

CMS中的数据是通过表单录入的,既

如果我直接将✅粘贴到数据库中,使用Mssql SSMS,字符出现在字段中,unicode(field) 是9989。

asp 可以检索 ✅ 并将其作为值放入 html 形式。

我post表格,页面显示表格发送正确代码,✅。页面然后 post 内容并再次检索它,但存储的值不是 ✅ 而是 "?", char 63.

所以DB->form没问题,form->DB坏了。

我的页面以

开头
<% Response.Charset="UTF-8"%>
<% Response.codepage="65001" %>

<form method='post' accept-charset="utf-8">

数据库中的字段是nvarchar,SQL_Latin1_General_CP1_CI_AI虽然我也试过Danish_Norvegian,没有区别。

编辑

我将插入包裹在一个函数中,但打开它是这样的:

Set cmd = Server.CreateObject("ADODB.Command")
Set cmd.ActiveConnection = connection 
cmd.CommandType = 1 ' adCmdText
cmd.CommandText = "update t_kat set meta_title=?,meta_description=? where id=?"

cmd.Parameters.Append cmd.CreateParameter("",adVarChar,1,255, request.form("meta_title"))
cmd.Parameters.Append cmd.CreateParameter("",adVarChar,1,255, request.form("meta_description"))
cmd.Parameters.Append cmd.CreateParameter("",adInteger,1,255, request.form("id")

cmd.Execute

编辑 2 如果我说 server.htmlencode(request.form("meta_description")) 它会起作用,但随后 ✅æøåÆØÅ 会作为 &#9989;&#230;&#248;&#229;&#198;&#216;&#197; 存储在数据库中,我宁愿避免这种情况。 在最坏的情况下,id 接受 "wierd" 字符作为 &#9989 但我更喜欢其他字符。但我认为没有 select 替换哪些字符的选项。

我可以在存储之前在 CMS 前端将每个 "weird" 字符替换为 %#nnnn 格式(我不认为他使用那么多),但我宁愿不去也有。

已解决! 参数应该是正确的类型:

cmd.Parameters.Append cmd.CreateParameter("",adVarWChar,1,255, request.form("meta_title")

adVarWChar 而不是 adVarChar

我认为在输入文本形式中使用数据时只需要替换引号

<input type='text' name="meta_title" value="<%=replace("""","&quot;",res("meta_title"))%>">

这是为了防止无效的HTML like <input type="text" value="The 11'8" bridge">

变成<input type="text" value="The 11'8&quot; bridge">

如果用作文本,<需要转义;

<B>one<two</B>