Сохранить HTML (как есть) в таблицу SQL 2005 - PullRequest
1 голос
/ 30 июня 2009

Учитывая следующий HTML "<b>demo</b>" Я хочу сохранить его в таблицу SQL 2005
Обязательно, без кодировки, без экранированных символов в сохраненном поле из базы данных

Сохраненный HTML должен быть как можно меньше.
Благодаря моим усилиям мой сохраненный HTML всегда сохраняется в кодированном виде &gt; html

EDIT:
Отладка моего кода Я обнаружил, что моя строка HTML отправлена ​​в кодировке моей StoredProcedure. Server.HtmlDecode не будет полностью декодировать мой HTML! Это вина TinyMCE.

Ответы [ 3 ]

1 голос
/ 30 июня 2009

Прямая вставка произвольной строки varchar всегда должна работать:

create table MarkupTable(
  id int identity(1,1) /*please don't berate me for using identity!*/
, markup varchar(max) /* this will use only the space taken by your markup string */
)

insert MarkupTable select '<html><b>demo</b></html>'

select * from MarkupTable

Теперь - вопрос: какой кусок кода кодирует вашу разметку ???

Некоторые стартовые места:

  • Правильно ли вы используете объекты C #: SqlParameter (SqlDbType.VarChar) .Value = yourMarkupString;
  • Вы где-нибудь используете FOR XML?
  • Используете ли вы что-нибудь вроде Security.Escape (разметка)?
  • Возвращается ли ваша строка как часть конверта XmlDocument или SOAP? (он будет экранирован сериализатором)
  • Получаете ли вы дважды закодированную строку?

Попробуйте:

Server.HtmlDecode(Server.HtmlDecode(markupString));

Для требований к пространству:

  • Вы можете запустить строку с помощью алгоритма удаления пробелов (все становится одним пробелом или табуляцией.
  • Вы можете сжать текст и даже не хранить varchar (max), а varbinary (max)
0 голосов
/ 30 июня 2009

Вы можете создать Server.HtmlEncode и сохранить его в поле varchar в базе данных (SQL 2005). Когда вы извлечете его, вы можете сделать Server.HtmlDecode и загрузить его в метку / литерал, и он будет отображаться нормально.

0 голосов
/ 30 июня 2009

Не попадитесь, используя «текстовый» тип данных для этих данных. Он будет удален с SQL-сервера, и вы не хотите, чтобы впоследствии у вас болела голова.

Сохранение данных в типе данных nvarchar(max).

Если сделать его как можно меньше, удаление ненужных пробелов может помочь уменьшить размер данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...