Formaty i kodowanie wiadomości to zbiorcze określenie technicznych aspektów struktury i zapisu znaków w korespondencji.
Struktura wiadomości a sposób zapisu znaków
Formaty i kodowanie wiadomości opisują dwa powiązane, lecz różne elementy komunikatu cyfrowego. Format określa budowę wiadomości, rozmieszczenie pól oraz sposób zapisania treści, natomiast kodowanie znaków decyduje o tym, jak litery, cyfry i symbole są reprezentowane w postaci bajtów. W przypadku poczty elektronicznej podstawową strukturę opisuje standard Internet Message Format. Wiadomość składa się z nagłówków oraz właściwej treści oddzielonych pustą linią. Nagłówki mogą zawierać między innymi pola From, To, Date i Subject. Ich nazwy mają ustalone znaczenie, dlatego nie należy traktować ich jak dowolnych opisów wpisywanych przez użytkownika.
Treść wiadomości może być zwykłym tekstem albo dokumentem MIME zawierającym jedną lub wiele części. MIME pozwala przekazać tekst w kilku wariantach, na przykład jako text/plain i text/html, a także dołączyć pliki. Poszczególne części są rozdzielane granicami określonymi w parametrze boundary. Typ danych wskazuje pole Content-Type, które może zawierać również parametr charset, na przykład charset=UTF-8. Przy załącznikach stosuje się dodatkowo nagłówki opisujące nazwę pliku i sposób kodowania zawartości.
UTF-8, charset i prawidłowe odczytywanie tekstu
Najczęściej stosowanym kodowaniem współczesnych wiadomości jest UTF-8, czyli sposób kodowania znaków zgodny z Unicode. Pozwala on zapisywać polskie litery, takie jak ą, ć, ę, ł, ń, ó, ś, ź i ż, a także znaki innych alfabetów oraz symbole. UTF-8 ma zmienną długość: podstawowe znaki alfabetu łacińskiego są zapisywane jednym bajtem, a wiele innych znaków zajmuje od dwóch do czterech bajtów. Sama liczba bajtów nie oznacza więc liczby znaków widocznych dla odbiorcy.
Informacja o kodowaniu musi być zgodna z rzeczywistym zapisem danych. Jeżeli tekst został zapisany jako UTF-8, lecz program odczyta go jako ISO-8859-2 albo Windows-1250, mogą pojawić się nieprawidłowe symbole, znaki zapytania lub tak zwane krzaczki. Błąd może dotyczyć wyłącznie tematu wiadomości, ponieważ temat znajduje się w nagłówku i wymaga osobnego kodowania, albo całej treści. W wiadomościach MIME parametr charset powinien odpowiadać kodowaniu konkretnej części, a deklaracja w dokumencie HTML powinna być zgodna z nagłówkiem i faktycznymi bajtami pliku.
W dokumentach HTML spotyka się deklarację <meta charset="UTF-8">, lecz nie zastępuje ona poprawnych nagłówków wiadomości. Program pocztowy może otrzymać informację o kodowaniu z kilku miejsc, dlatego niespójne deklaracje utrudniają interpretację. Szczególnie problematyczne jest ręczne kopiowanie tekstu między starszymi programami, edytorami i formularzami, które używają różnych stron kodowych. Konwersja powinna odbywać się świadomie, z zachowaniem Unicode, a nie przez przypadkową zmianę rozszerzenia pliku lub ustawień czcionki.
Tekst zwykły, HTML i kodowanie załączników
Wiadomość w formacie text/plain zawiera tekst bez formatowania typograficznego. Jest łatwa do przetwarzania i zwykle dobrze działa w różnych programach, ale nie przechowuje kolorów, tabel ani układu strony. Format text/html umożliwia użycie nagłówków, akapitów, odsyłaczy i innych elementów HTML. Wiadomość HTML może jednak wyglądać inaczej w zależności od programu pocztowego, ponieważ klient może ograniczać obsługę stylów, skryptów, zewnętrznych zasobów lub określonych elementów dokumentu.
Wiadomość wieloczęściowa może zawierać wersję zwykłą i HTML jednocześnie. Część multipart/alternative służy do przedstawienia tej samej treści w różnych formatach, a klient pocztowy wybiera wariant, który potrafi wyświetlić. Załączniki są często przekazywane w strukturze multipart/mixed. Dane binarne nie są bezpośrednio bezpiecznym tekstem dla wszystkich mechanizmów transportu pocztowego, dlatego stosuje się kodowanie transferowe, przede wszystkim Base64. Base64 zmienia dane binarne na znaki tekstowe, ale zwiększa ich objętość mniej więcej o jedną trzecią. Nie jest to szyfrowanie ani zabezpieczenie przed odczytem.
W nagłówkach i treści mogą występować także mechanizmy quoted-printable oraz kodowanie słów nagłówkowych zapisane według składni MIME, na przykład dla tematu zawierającego polskie znaki. Ich zadaniem jest poprawne przenoszenie znaków spoza podstawowego zestawu ASCII w środowiskach, które historycznie miały ograniczenia dotyczące znaków ośmiobitowych. Nie należy mylić kodowania znaków, kodowania transferowego i szyfrowania: pierwsze opisuje reprezentację tekstu, drugie sposób transportu danych, a trzecie ma zapewnić poufność albo integralność przy użyciu odpowiedniego mechanizmu kryptograficznego.
Rozpoznawanie problemów z formatem wiadomości
Objawy błędnego kodowania obejmują zamianę polskich znaków na inne symbole, nieczytelny temat, brak załącznika, wyświetlenie kodu HTML zamiast sformatowanej treści albo pokazanie pustej wiadomości. Diagnozę warto rozpocząć od porównania tej samej wiadomości w kilku klientach pocztowych i w wersji internetowej. Jeżeli problem występuje tylko w jednym programie, przyczyną może być lokalna konfiguracja, nieaktualny silnik renderowania HTML, uszkodzony profil użytkownika lub błędna interpretacja nagłówków. Jeżeli błąd powtarza się u różnych odbiorców, trzeba przeanalizować surowe źródło wiadomości.
W źródle należy sprawdzić pola Content-Type, charset, Content-Transfer-Encoding oraz granice części MIME. Istotne jest również porównanie deklaracji kodowania z rzeczywistą zawartością, ponieważ poprawnie wyglądający nagłówek nie naprawi danych zapisanych w innym standardzie. Przy załączniku trzeba zweryfikować, czy część ma właściwy typ MIME, nazwę pliku oraz kompletne dane Base64. Ucięcie wiadomości podczas kopiowania, nieprawidłowe łamanie linii albo ingerencja programu pośredniczącego może uniemożliwić odtworzenie pliku.
Warszawskie Pogotowie Komputerowe wykonuje profesjonalną naprawę laptopów, komputerów PC i podzespołów, w tym diagnostykę problemów z programami pocztowymi, wyświetlaniem treści oraz obsługą plików na komputerze użytkownika.