Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблемы с кодировками

5.9K
06 марта 2007 года
Eksell
49 / / 16.11.2005
Доброго времени суток уважаемые форумчане!
Я делаю email client. Все уже почти готово, все работает, вот только появилась проблема с кодировками. Дело в том что в некоторых письмах, например в title письма программа отображает примерно следующее : =?koi8-r?Q?=F0=D2=C9=D7=C5=D4?=. Но вообщем я решил эту задачу. Но меня интересует, каким образом можно определить в какой кодировке отображен текст... например в memo, чтоб потом программа автоматически перекодировала его (если нужно) из koi в win?
Это моя дипломная работа. Помогите пожалуйста, очень прошу.
Спасибо заранее!
8
06 марта 2007 года
mfender
3.5K / / 15.06.2005
Читай заголовки письма. Там есть header Content-Type, в котором указан charset.
10
06 марта 2007 года
Freeman
3.2K / / 06.03.2004
За это время можно было найти ответ и самостоятельно.

Цитата: Eksell
Дело в том что в некоторых письмах, например в title письма программа отображает примерно следующее : =?koi8-r?Q?=F0=D2=C9=D7=C5=D4?=.


Письма и заголовки могут отправляться в 3-х видах:

  • 8 бит
  • base64
  • quoted-printable
Определяется по заголовку письма, строки content-type и content-transfer-encoding.

Заголовок может кодироваться самостоятельно, как в приведённом примере. Принцип следующий - =?кодировка?тип?=:
  • сигнатура =? говорит о том, что используется кодирование
  • потом идёт название кодировки по RFC
  • тип кодирования:[LIST]
  • Q - quoted printable
  • B - base64
  • после завершающей сигнатуры ?= следует непосредственно текст в указанной кодировке[/LIST]
    Некоторые почтовые системы могут кодировать заголовки из нескольких строк разными кодировками. Бат отрабатывает подобные вольности штатно:
     
    Код:
    Subject: Re: =?windows-1251?Q?=CB=E5_=EF=F7=E8?=
     =?windows-1251?Q?_=FA=EF=EE=F7=FD=E5=EB_=F7=E5=F0=F2?=,
     =?windows-1251?Q?=EA=E0=EA_=E5?=
     =?koi8-r?B?x88gzcHMwNTLwSDWLSk=?=

    Закавыка в последней строке. По всей вероятности, почтовый клиент писали "узники оператора IF".

    Согласно стандарту, кодированный текст содержит только одну строку и кодировка не может быть рекурсивной (внутри одной кодировки - другая).
  • 5.9K
    13 марта 2007 года
    Eksell
    49 / / 16.11.2005
    Цитата:

    =?koi8-r?Q?=F0=D2=C9=D7=C5=D4?=.



    Возможно Вы меня не так поняли. С этим делом я уже разобрался (=?koi8-r?Q?=F0=D2=C9=D7=C5=D4?=)...
    Мне просто нужно узнать какой кодировкой закодирован текст... например в мемо... чтоб программа сама потом определяла, нужно декодировать или нет... Например, если в мемо выводится следующее:

     
    Код:
    чБЫБ ЪБСЧЛБ РПМХЮЕОБ Й ОБРТБЧМЕОБ ЗЙДХ ЧЩВТБООПК чБНЙ
    ТХВТЙЛЙ ЛБФБМПЗБ ДМС РТПЧЕТЛЙ Й ЧПЪНПЦОП ОЕПВИПДЙНПЗП
    ТЕДБЛФЙТПЧБОЙС ПРЙУБОЙС. ч УМХЮБЕ ТЕЫЕОЙС П ЧЛМАЮЕОЙЙ чБЫЕЗП
    ТЕУХТУБ Ч ЛБФБМПЗ Ulitka.RU чБН ВХДЕФ РП ХЛБЪБООПНХ РТЙ ТЕЗЙУФТБГЙЙ
    БДТЕУХ ЬМЕЛФТПООПК РПЮФЩ ОБРТБЧМЕОП ХЧЕДПНМЕОЙЕ.

    Я так понимаю что это KOI. Как это можно определить программно?
    Помогите пожалуйста, это очень важно для меня. Желательно по подробнее.
    Буду очень благодарен за помощь!
    497
    13 марта 2007 года
    IL84
    267 / / 24.04.2003
    Посмотри в DRKB (drkb.ru) там есть Статья "Распознавание кодировки", в которой описывается программное определение кодировки с помощью частотного метода.
    257
    13 марта 2007 года
    kosfiz
    1.6K / / 18.09.2005
    можно посмотреть:
    1. http://yanish.by.ru/projects/nb/xlat.zip - смотреть в коде функцию AutoCode
    2. http://www.podgoretsky.com/ftp/Language/nps/ru.delphi.html#N151 - определение методом таблицы модельных распределений.
    Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
    Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог