Автор Тема: Определение кодировки...  (Прочитано 7896 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн MayVortex

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.dinfo.ru
Определение кодировки...
« : 03 Января 2003, 11:58:30 »
Обчитался статей с этого сайта и решил забабахать свой почтовый сервак с web-интерфейсом... Всё получилось, всё работает (спасибо Webscript и авторам статей!) но... Как вы знаете не все письма приходят в Windows кодировке, поэтому получается, что когда открываешь письмо, написанное в koi-8 не понятно, что в письме написанно, а когда меняешь кодировку - письмо становится понятным, а все остальные надписи на сайте - нет! Вот и приходится по 50 раз за сеанс менять кодировку...
И тут возникла идея: а что если определять на какую кодировку переключился юзверь и выдавать текст на страничку из определённого файла? Например: переклчился юзер на KOI-8, письмо он видит нормально и русские надписи (сайтовские) подкгрузились из файла koi.php (там они уже написанны в кои - соответственно) или переключился на win - вот тебе надписи из win.php

Я пробовал найти переменную окружения, которая содержала бы в себе кодировку, но так и не нашёл...
$a = getenv($CHTO_TUT?);

Не подскажете, как организовать проверку?

P.S. Только ответ "с помощью переменных окружения" не  покатит. Лучше написать скрипт без комментария, чем комментарий без скрипта.
P.P.S. Всё это очень хочется сделать на PHP, так-как остальная часть уже написанна на PHP...
« Последнее редактирование: 03 Января 2003, 12:04:14 от MayVortex »

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Определение кодировки...
« Ответ #1 : 03 Января 2003, 12:01:21 »
Цитировать
Только ответ "с помощью переменных окружения" не покатит.

Это будет неверный ответ. На каком языке пишем?
The documentations is your friend

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Определение кодировки...
« Ответ #2 : 03 Января 2003, 12:04:08 »
Сори... Не туда забежал :)
Я знаю как на Perl это реализовано.
The documentations is your friend

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Определение кодировки...
« Ответ #3 : 03 Января 2003, 12:14:58 »
Дам один бесполезный ответ.
ВСЕ переменные окружения, доступные РНР, можно узнать, написав одну короткую команду - phpinfo()
Очень рекомендую.

Задам два полезных вопроса.
Переменную КАКОГО окружения?
Кодировку ЧЕГО?

Оффлайн MayVortex

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.dinfo.ru
Определение кодировки...
« Ответ #4 : 03 Января 2003, 12:24:34 »
Кодировку ЧЕГО? -- такое длинное письмо написал, а так и не понятно кодировку чего я хочу узнать?!
Мне нужно узнать, какая кодировка выставлена у юзера в броузере... Те, которые Windows-1251, KOI8-R и так далее...

phpinfo() - я уже пробовал... Там действительно есть Environment: LANG, но оно по какой-то странной причине всегда ru_RU.koi8r. Больше я там ничего нужного не встретил...

Кстати, если это не возможно сделать на PHP, напишите тогда как это написать на перле... Я думаю можно будет перловый скритп выполнить из PHP и получить оттуда значение...

Или может быть есть другой метод решения задачи... Мне важно не получение значения переменной, а чтобы почта и сайт были в одной кодеровке... Может это можно сделать другим способон, например конвертировать сами письма "на лету" в нужную кодировку...
« Последнее редактирование: 03 Января 2003, 12:29:42 от MayVortex »

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Определение кодировки...
« Ответ #5 : 03 Января 2003, 12:29:52 »
В принципе, его можно и на PHP переписать. Идея там понятна, маски даны.
http://www.cpan.org/modules/by-module/Convert/cyrillic-1.05.tar.gz
_TXT_
All Russian WEB sites have to provide different encodings of Russian texts.
Four main encodings are CP1251 for Windows, KOI8 for UNIX, MAC for Macintosh
and transliteration for users accepting only English texts.

This suite is intended for webmasters solving various issues related to
multiple charsets.

You may install these scripts on your web site for free. To obtain permision
for redistribution or any other usage, please contact john@neystadt.org.

Drop me a line if you deploy these scripts on your site.

WWW Cyrillic Encoding Suite is a set of PERL packages and scripts, intended
to be used by WWW CGIs.

Included:
   * CPAN modules of
      - Convert::Cyrillic
      - Convert::Cyrillic::Utils
      - Lingua::DetectCharset
   * Scripts (available separately)
      - cyr-mail-filter.pl - charset mapper for for cyrillic mailing
         lists
      - code.pl - cgi for on-the-fly charset mapping
The documentations is your friend

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Определение кодировки...
« Ответ #6 : 03 Января 2003, 12:40:20 »
MayVortex, я, конечно, уважаю сложность и нетривиальность решения, которое тебе пришло в голову, но, может быть, тебя устроит не такой сложный вариант?
Определить кодировку самого письма (она пишется в заголовках) и, если она не совпадает с кодировкой сайта, перекодировать через
convert_cyr_string ?

Оффлайн MayVortex

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.dinfo.ru
Определение кодировки...
« Ответ #7 : 03 Января 2003, 12:46:07 »
Все бы хорошо, только бывает и так, что тело письма в одной кодировке, а заголовки (поле From, subject) в другой... Но направление, я думаю, действительно нужно брать такое:
определить кодировку строки (по моему я где-то видел такую функицию! не подскажете как?), если она не win - перекодировать в win, иначе оставить так... Я письмо вывожу не всё сразу, а примерно так, пожтому должно сработать:
-
echo stripslashes($subject);
echo stripslashes($body);
-
и так далле

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Определение кодировки...
« Ответ #8 : 03 Января 2003, 13:07:24 »
Заголовки (headers) НЕ БЫВАЮТ ни в какой кодировке, кроме latin-1, поскольку они всегда пишутся на английском языке.
или ты где-то встречал такие заголовки:
Принимаем-кодировку:
ОтКого:
Возврат-Путь:
Хэ-Почтовик
Хэ-Важность?

Я с трудом себе представляю человека, который написал почтовый веб-интерфейс, но не знает, что такое mime-headers...

Оффлайн MayVortex

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.dinfo.ru
Определение кодировки...
« Ответ #9 : 03 Января 2003, 13:11:59 »
Э... Да я не про то!
Я говорю, что поле Subject и сам текст письма могут дыть в разных кодировках! Например Subjetc в Win, а письмо в KOI.
Поэтому нужно определять в какой кодировке строка... Думал, что этим занимается mb_detect_encoding, ан нет... она определяет но не то...
« Последнее редактирование: 03 Января 2003, 13:19:52 от MayVortex »

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Определение кодировки...
« Ответ #10 : 03 Января 2003, 13:20:44 »
MayVortex
А что мешает обработать при помощи convert_cyr_string тему и тело сообщения по отдельности?
AS IS...

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Определение кодировки...
« Ответ #11 : 03 Января 2003, 13:23:14 »
MayVortex
Ты можешь сосредоточиться на решении одной задачи?
сначала научиться выводить хотя бы тело письма, а потом уже думать о сабжекте?

Оффлайн MayVortex

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.dinfo.ru
Определение кодировки...
« Ответ #12 : 03 Января 2003, 13:30:56 »
что мешает обработать при помощи convert_cyr_string -- и куда? В какую кодеровку? Если я ему скажу: "конвертируй из Win в KOI", а он уже в KOI, чего станет?! Поэтому нужно сначала определить в какой кодеровке строка... Как?

Ты можешь сосредоточиться на решении одной задачи? -- могу, её родную и решаю.

сначала научиться выводить хотя бы тело письма, а потом уже думать о сабжекте? -- всё у меня прекрасно выводится, только в разных кодировках, это и раздражает 800 юзеров, которые пользуются этим наворотом :( А объяснить им, что это их апоненты виноваты, которые так криво письма шлют - не возможно! Проще сделать так, что бы всё конвертилось к одной кодировке - это я и пытаюсь делать!

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Определение кодировки...
« Ответ #13 : 03 Января 2003, 13:35:44 »
Ну вообще, кодировка сообщения как правило прописана в заголовках.
Оттуда и выдергивай.
AS IS...

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Определение кодировки...
« Ответ #14 : 03 Января 2003, 13:39:35 »
Цитировать
Ну вообще, кодировка сообщения как правило прописана в заголовках.

Как правило, но не всегда.
Бывает: Content-Type:  text/plain  и все тут ;) без всяких charset=...
The documentations is your friend

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28