powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / определить Encoding
3 сообщений из 3, страница 1 из 1
определить Encoding
    #33990098
Pavel Dvorkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Установлен фильтр

public class FilterModule : IHttpModule {...

Фильтр устанавливает свой поток и в его методе Write мне надо знать Encoding отсылаемого HTML

Сейчас делаю это в фильтре в OnBeginRequest, но не слишком ли рано ? Вроде бы только началась обработка, и

streamEncoding = httpApp.Response.ContentEncoding;

валидно ли ?

Если не здесь, то где лучше ? Но надо обязательно до того, как будет вызван Write в потоке — к тому времени уже надо знать.
...
Рейтинг: 0 / 0
определить Encoding
    #33990165
Pavel Dvorkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос в прежнем виде снят. Некорректно все это. Нельзя в фильтре ничего определять, так как он может вызываться для разных страниц и неизвестно, к какой из них относится последующий Write

Вопрос поэтому такой — как в Write определить, какой там Encoding. Она получает массив байтов

public override void Write (byte[] buffer, int offset, int count)

Пока вижу одно решение — вызвать Win32 функцию IsTextUnicode через InterOp. Есть ли решение без него ? Дан массив байтов, определить, какой там Encoding в предположении, что это байты текстового ответа.
...
Рейтинг: 0 / 0
определить Encoding
    #34004882
Sinclair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Установлен фильтр

PD> public class FilterModule : IHttpModule {...
Что-то непонятно.
1. То, что установлено — это не фильтр , а модуль . У модуля нет никакого метода Write.
PD>Фильтр устанавливает свой поток
Телепатически угадываю: ты хотел сказать " Модуль устанавливает свой фильтр "?
PD>и в его методе Write мне надо знать Encoding отсылаемого HTML
А, у Stream конечно есть метод Write. Но зачем тебе знать Encoding отсылаемого HMTL?
PD>Если не здесь, то где лучше ? Но надо обязательно до того, как будет вызван Write в потоке — к тому времени уже надо знать.
Не понимаю, почему бы тебе не отложить этот вопрос непосредственно до Write:

publiс class MyFilter: Stream
{
  private HttpResponse _response;
    private Stream _underlying;
    public MyFilter(HttpResponse response)
    {
      _response = response;
        _underlying = response.Filter;
    }
    private Encosing CurrentEncoding
    {
      get { return _response.ContentEncoding;}
    }
    // Stream implementation
  public override void Write (byte[] buffer, int offset, int count)
    {
        _underlying.Write(buffer, offset, count);
        byte[] edrit = CurrentEncoding.GetBytes("едрить");
        _underlying.Write(edrit, 0, edrit.Length);
    }
    ...
) 1.1.4 stable rev. 510
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / определить Encoding
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]