Декодируйте почтовый заголовок UTF8

В первом случае он вызовет метод DoIt () производного класса, потому что новое ключевое слово скрывает метод базового класса DoIt ().

Во втором случае он вызовет overriden DoIt ()

  public class A
{
    public virtual void DoIt()
    {
        Console.WriteLine("A::DoIt()");
    }
}

public class B : A
{
    new public void DoIt()
    {
        Console.WriteLine("B::DoIt()");
    }
}

public class C : A
{
    public override void DoIt()
    {
        Console.WriteLine("C::DoIt()");
    }
}

позволяет создать экземпляр этих классов

   A instanceA = new A();

    B instanceB = new B();
    C instanceC = new C();

    instanceA.DoIt(); //A::DoIt()
    instanceB.DoIt(); //B::DoIt()
    instanceC.DoIt(); //B::DoIt()

Все ожидается выше. Позвольте задать экземпляр B и instanceC в instanceA и вызвать метод DoIt () и проверить результат.

    instanceA = instanceB;
    instanceA.DoIt(); //A::DoIt() calls DoIt method in class A

    instanceA = instanceC;
    instanceA.DoIt();//C::DoIt() calls DoIt method in class C because it was overriden in class C
23
задан Jonathan S. 20 November 2008 в 17:21
поделиться

4 ответа

encoded-word маркеры (согласно RFC 2047 ) могут произойти в значениях некоторых заголовков. Они анализируются следующим образом:

=?<charset>?<encoding>?<data>?=

Набор символов является UTF-8 в этом случае, кодирование B, что означает base64 (другая опция Q, что означает Заключенный в кавычки Печатаемый).

Для чтения его сначала декодируйте base64, затем рассматривайте его как символы UTF-8.

Также читает различную интернет-Почту RFCs для большего количества детали, главным образом RFC 2047 .

, Так как Вы используете Perl, , Кодирует:: MIME:: Заголовок мог быть полезным:

КРАТКИЙ ОБЗОР

РЕЗЮМЕ

use Encode qw/encode decode/;
$utf8   = decode('MIME-Header', $header);
$header = encode('MIME-Header', $utf8);

Этот модуль реализует Кодирование Заголовка Пантомимы RFC 2047. Существует 3 различных имени кодирования; Заголовок MIME, MIME-B и MIME-Q. Различие описано ниже

              decode()          encode()  
MIME-Header   Both B and Q      =?UTF-8?B?....?=  
MIME-B        B only; Q croaks  =?UTF-8?B?....?=  
MIME-Q        Q only; B croaks  =?UTF-8?Q?....?=
36
ответ дан Palec 29 November 2019 в 01:14
поделиться

Я думаю, что Закодировать дескрипторы модуля, что с MIME-Header кодирование, так попробуйте это:

use Encode qw(decode);
my $decoded = decode("MIME-Header", $encoded);
17
ответ дан moritz 29 November 2019 в 01:14
поделиться

Проверьте RFC2047 . «B» означает, что часть между двумя последними символами? Кодируется в base64. UTF-8, естественно, означает, что декодированные данные должны интерпретироваться как UTF-8.

3
ответ дан marijne 29 November 2019 в 01:14
поделиться

Это стандартное расширение для маркировки заголовков в кодировке, указанное в RFC2047 .

1
ответ дан wnoise 29 November 2019 в 01:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: