определить длину содержимого строки html - PullRequest
1 голос
/ 03 ноября 2010

Я экспортирую таблицу HTML в Excel, отправив данные в виде строки таблицы HTML и установив заголовки содержимого:

Dim html as String = "<table><tr><td>example<td></tr></table>"

context.Response.Clear()
context.Response.AddHeader("Content-Disposition", "attachment; filename=" & "exceldata-" & Now.ToString("yyyyMMddHHmmss") & ".xls")
'context.Response.AddHeader("Content-Length", ????)
context.Response.ContentType = "application/octet-stream"
context.Response.Write(response)
context.Response.End()

Существует ли простой способ задания длины содержимого в зависимости от размераHTML-строки?Или я должен просто оставить это пустым в любом случае ... было бы неплохо иметь длину содержимого в идеале ...

Я возвращаю это, используя GenericHandler в asp.net

Ответы [ 3 ]

5 голосов
/ 03 ноября 2010

Замените кодировкой на ваш выбор, вероятно, UTF8. Извините за C #:

ASCIIEncoding encoding = new ASCIIEncoding();
byte[] bytes = encoding.GetBytes(html);
int length = bytes.Length;

Источник: http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.contentlength.aspx

1 голос
/ 03 ноября 2010

Я не использовал ASP.NET, но я предполагаю, что метод Length () возвращает длину строки в символах, а не в байтах, поэтому он не будет работать, если ваш сервер использует UTF-8 или Unicode для обслуживаниястраницы.

Как отмечено в другом ответе, просто позвольте серверу заполнить его для вас.Если вы думаете об этом, вам не нужно добавлять его при создании HTML-страниц из ASP, поскольку веб-сервер будет генерировать его на основе ответа от модуля ASP.

1 голос
/ 03 ноября 2010

Это кажется слишком простым, но разве оно не равно html.Length?

...