charset

Andrey N. Oktyabrski ano at antora.ru
Sun Jul 10 12:26:40 MSD 2005


Igor Sysoev wrote:
> On Sun, 10 Jul 2005, Andrey N. Oktyabrski wrote:
> 
>> Igor Sysoev wrote:
>>
>>>
>>> На данный момент ngx_http_charset_module работает так:
>>>
>>> 1) есть директива charset on|off, которая включает работу модуля;
>>> 2) есть директива default_charset, которая задаёт кодировку ответа;
>>> 3) есть директива source_charset, которая задаёт исходную кодировку.
>>>
>>> Если source_charset и default_charset не совпадают, то делается 
>>> перекодировка.
>>> Если же задана только одна из таких директив, то перекодировка не 
>>> делается,
>>> а просто выставляется charset, исходя из этой директивы.
>>>
>>> Мне такое положение кажется избыточным и неудобным.
>>> charset on|off появилась в связи с тем, что были планы сделать
>>> автоопределение кодировки клиента, как в руссокм Апаче.
>>>
>>> Поскольку планы изменились и автоопределения не будет, то можно
>>> сделать такие изменения:
>>>
>>> 1) директива charset задаёт кодировку ответа, charset off запрещает 
>>> выдачу
>>>    кодировки;
>>> 2) директива source_charset, которая задаёт исходную кодировку.
>>>
>>> Если source_charset и charset не совпадают, то делается перекодировка.
>>> Если задан только source_charset, то ничего не делается.
>>
>> То есть, если я в сервере хочу переопределить source_charset, мне надо 
>> там обязательно выставить и charset, чтобы оставить перекодировку 
>> выключенной (Если в http я задал умолчания)? Это плохо. Можно ли 
>> сделать в charset третью альтернативу - "source_charset", которая 
>> будет указывать, что перекодировку делать не надо никогда, а кодировку 
>> ответа выставлять всегда в source_charset? То есть, где-то так:
>> charset <кодировка>|off|source_charset
> 
> 
> Предлагается следующее:
> 
> http {
> 
>    # Content-Type: ...; charset=windows-1251
>    # перекодирование из koi8-r в windows-1251
> 
>    charset         windows-1251;
>    source_charset  koi8-r;
> 
>    server {
>        # унаследованный Content-Type: ...; charset=windows-1251
>        # перекодирования нет, так как charset и source_charset совпадают
> 
>        source_charset  windows-1251;
>    }
Вот, и я об этом - если я теперь добавлю
     server {
       # в нём нет *charset
     }

То в нём перекодировка будет по умолчанию. Если я этого не хочу, мне 
надо там написать ОБЕ директивы с одинаковым значением.





More information about the nginx-ru mailing list