• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Нестандартная кодировка страницы.

  • Автор темы Alexander (Criz)
  • Дата начала
A

Alexander (Criz)

На Домино поднят вэб-сервер, в файле сайта для кириллицы прописана кодировка Windows-1251, но есть необходимость иногда выдавать информацию в кодировке KOI8-R.
Есть агент, в котором есть такие строки:
<!--shcode--><pre><code class='basic'>Print {Content-Type:text/xml}
Print {<?xml version="1.0" encoding="KOI8-R"?>}[/CODE]
в итоге страница опознаётся браузером как KOI8-R, но внутри всё тот же Windows-1251, получаются кракозябры..

Что можно с эти сделать?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 940
609
BIT
210
а поток кто перекодирует, на выходе из агента?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 940
609
BIT
210
Print выводит данные не обращая внимание на "ваш хэдер" - или вы ожидали другого? :huh:
стринг надо закодировать соответственно, байдефолт - стринги кодируются в UTF-8
вот мои изыскания:

вот перекодировка в LS -
для java InputStream... всякие

может это пригодится:
 
A

Alexander (Criz)

Михаил, спасибо! Но пока внятного результата не получил:

использую функцию
[codebox]Function ConvertCharset(st As String, from_char As Long, to_char As Long) As String
Dim msg As New LCStream (0, 0, from_char)
msg.Text = st
msg.ResetFormat to_char
ConvertCharset = msg.Text
End Function[/codebox]

задаю такую строку:
[codebox]Print ConvertCharset(|Привет мир|, LCSTREAMFMT_NATIVE, LCSTREAMFMT_KOI8)[/codebox]

выводит крокозябры, которые уже не видны нормальными ни в одной из кодировок.
Такое ощущение что на выходе вэб-сервер ещё раз полученную строку кодирует в кодировку по-умолчанию...

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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 940
609
BIT
210
я бы проверил работает ли вывод с вариантом UTF-8 (как в моем примере)

и кодировку в браузере выставить принудительно:
надо учесть, что "умные" программы от мелкософта любят автоматически определять кодировку (и делают это не всегда правильно - потому как хэдеры не всегда смотрят), конкретно это относиться к УЁ

Третью ссылку вы пробовали? Др. словами - from_char не нэйтив (тотже ЮТФ и ВИН1251)
про настройки сервера и их влияние на Print - я сей момент не вспомню
подергайте джаву - там может по-другому работать (хотя не могу гарантировать)
теоретически - указание
Print "Content-Type: text/html; charset=UTF-8"
именно вместе с кодировкой (ваш случай - КОИ), должно "отрубить" вмешательство Домины

возможно покопав Char Set в настройках Site или Server в части Domino Web Engine (у меня там Use UTF-8 for output - No) и поигравшись с фромчар (при перекодировке) - получится предсказуемый резалт
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!