Загадка про кодировки

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Topper
Бывший модератор
Сообщения: 2088
Статус: Насильник бабушек-педофилок
ОС: Windows 10

Загадка про кодировки

Сообщение Topper »

В общем, расклад такой. имеется "админка" - веб-интерфейс, где вбивается в хтмл-кодах реклама. есть груда сайтов, на которых посредством пхп эта реклама впихивается на страницу. все было замечательно, пока я не наткнулся на сайт в UTF8. а админа - в 1251. собственно, вопрос: а что делать-то? ПХП стоит пятый, есть информация, что он это умеет, но внятной инфы пока не нашел...
Хрю.
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Загадка про кодировки

Сообщение KiWi »

Вариант 1:
1. Узнать нужный charset:
1.1. Для каждого сервера сохранять какой нужен charset.
1.2. Заставить посылать правильный Accept-Charset при запросе.
1.3. Что-нибудь ещё, чтобы узнать необходимую кодировку.
2. Выдавая контент, учитывать кодировку. То есть перекодировать, при помощи iconv, например.

Вариант 2:
1. Заставить того, кто вставляет рекламу перекодировать:
1.1. С использованием iconv.
1.2. Самописная функция, перекодирующая cp1251 в utf8.
Спасибо сказали:
Topper
Бывший модератор
Сообщения: 2088
Статус: Насильник бабушек-педофилок
ОС: Windows 10

Re: Загадка про кодировки

Сообщение Topper »

админка писана не мной и является неприкасаемой вещью. поддержки перекодирования не имеет, либо я не нашел. пробовал сконвертить текст в утф8 и вставить в админку - так она, собака, автоматом в 1251 перекодирует.
вот насчет 1.2 - если можно, поподробней. в идеале - для пхп.
Хрю.
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Загадка про кодировки

Сообщение KiWi »

Topper писал(а):
02.06.2006 23:47
админка писана не мной и является неприкасаемой вещью. поддержки перекодирования не имеет, либо я не нашел. пробовал сконвертить текст в утф8 и вставить в админку - так она, собака, автоматом в 1251 перекодирует.
вот насчет 1.2 - если можно, поподробней. в идеале - для пхп.

Ok.
В HTTP-протоколе предусматривается такой заголовок, как Accept-Charset, в котором должна указываться кодировка, в которой хотелось бы получить данные.
Далее, в скрипте, который отдаёт рекламу, в начале добавляем, например, такие строчки:

Код: Выделить всё

// Выделяем первую кодировку из Accept-Charset, если нет, то cp1251 {{{
if (preg_match("/^([-A-Za-z0-9]+)/", $_SERVER['HTTP_ACCEPT_CHARSET'], $matches)) {
    $charset = $matches[1];
} else {
    $charset = "cp1251";
}
// }}}
unset($matches);
// Установка кодировок для iconv'а {{{
iconv_set_encoding("internal_encoding", "cp1251");
iconv_set_encoding("output_encoding", $charset);
// }}}
unset($charset);
ob_start("ob_iconv_handler");

Это при условии поддежки iconv.
Естественно, в ob_start можно впихнуть свой callback.
Далее, задача сводится к более простой -- заставить присылать клиентов этот самый Accept-Charset.
Спасибо сказали:
Topper
Бывший модератор
Сообщения: 2088
Статус: Насильник бабушек-педофилок
ОС: Windows 10

Re: Загадка про кодировки

Сообщение Topper »

ых
говорю же, не могу я править скрипты, отдающие рекламу. надо бы что-нить пхпешное, чтобы на конкретном сайте (поскольку такая проблема только с одним из более чем 25 сайтов) производить перекодировку...
Хрю.
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Загадка про кодировки

Сообщение KiWi »

Topper писал(а):
04.06.2006 01:30
ых
говорю же, не могу я править скрипты, отдающие рекламу. надо бы что-нить пхпешное, чтобы на конкретном сайте (поскольку такая проблема только с одним из более чем 25 сайтов) производить перекодировку...

А, ну тогда, iconv на этом сайте.
Спасибо сказали: