Я не могу получить символы юникода из формы в db
Веб-дизайнер / seo-guy хочет использовать символ юникода ✅ (9989, который отображается в виде галочки белого цвета в зеленом поле.
Данные в CMS вводятся через форму, как
. Если я вставляю ✅ непосредственно в базу данных, используя Ms sql SSMS, символ отображается в поле, а юникод (поле) - 9989.
asp может получить ✅ и поместить его в качестве значения в форму html.
Я отправляю форму, страница показывает, что форма отправляет правильный код, the. Страница затем отправьте содержимое и извлеките его снова, но сохраненное значение не ✅, а "?", символ 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, без разницы.
edit
У меня вставка вставлена в функцию, но развернута это так:
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
* 102 5 *
РЕДАКТИРОВАТЬ 2 Это работает, если я скажу
server.htmlencode(request.form("meta_description"))
, но тогда ✅æøåÆØÅ сохраняется в БД как
✅æøåÆØÅ
, чего я бы предпочел избежать. В худшем случае id принимает «странные» символы как
✅
, но я предпочитаю другие символы как есть. Но я не думаю, что есть возможность выбрать, какие символы заменять.
Я мог бы сделать замену каждого "странного" символа на формат %#nnnn
(я не думаю, что он использует так много) в интерфейсе CMS перед сохранением, но я бы тоже не стал go.