Возврат каретки, который работает как в HTML, так и в тексте - PullRequest
1 голос
/ 11 октября 2011

Я работаю над кодом, который сбрасывает данные в таблицу.

Некоторые данные включают возврат каретки.

В конце концов, данные будут экспортированы в виде электронного письма в формате HTML или в текстовом файле (CSV), или в обоих форматах. Я заранее не знаю, какой метод экспорта будет использован для этих данных.

Если я напишу, моя карета возвращается в базу данных следующим образом:

UPDATE SOME_TABLE
SET TEXT_VALUE = @LineOne + CHAR(13) + CHAR(10) + @LineTwo
WHERE ID = @IDValue

Тогда он отлично работает в CSV-файле, но электронная почта HTML полностью испорчена - она ​​путает кодировку и отображает электронную почту с заголовком и информацией MIME и совершенно бесполезна, за исключением отладки.

С другой стороны, если я напишу, моя каретка возвращается в базу данных следующим образом:

UPDATE SOME_TABLE
SET TEXT_VALUE = @LineOne + '<br>' + @LineTwo
WHERE ID = @IDValue

Тогда все наоборот - он работает в электронной почте, но текстовый файл выводится с фактическим «br», встроенным в текст, как в «LineOne
LineTwo».

Есть ли способ представить возврат каретки таким образом, чтобы он давал одинаковый результат в и в простом тексте и в HTML?

Все это выполняется на SQL Server 2008 изнутри хранимой процедуры T-SQL.

Ответы [ 3 ]

4 голосов
/ 11 октября 2011

Я думаю, что наиболее подходящий способ - это сохранить весь текст "как есть" с CR LF, а затем делать правильные манипуляции при извлечении данных из таблицы, т.е.конвертировать переводы строк в
, если вы отображаете html и т. д.

3 голосов
/ 11 октября 2011

Это один из тех случаев, когда нет простого ответа на этот вопрос. HTML и простой текст интерпретируются очень по-разному, как вы видите здесь. Новая строка отличается в обоих и не совместима в других.

Что вам нужно сделать, это разделить логику на различные хранимые процедуры: одну для форматирования HTML / электронной почты и одну для форматирования простого текста / CSV.

0 голосов
/ 11 октября 2011

Я не уверен, какой язык вы используете для отправки электронного письма. Если это PHP, вы можете использовать обычный текст с возвратами каретки и преобразовать их в html-переводы строк, используя:

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