My script does not display Polish characters. How to fix it? Thank you.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<?php
header('Content-Type: text/html; charset=utf-8');
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = 'user@gmail.com';
$password = 'pass';
$inbox = imap_open($hostname, $username, $password) or die('Cannot connect to Gmail: ' . imap_last_error());
$emails = imap_search($inbox, 'ALL');
if ($emails) {
$output = '';
foreach ($emails as $email_number) {
$overview = imap_fetch_overview($inbox, $email_number, 0);
$message = imap_fetchbody($inbox, $email_number, 2);
$output.= '<div class="toggler ' . (imap_utf8($overview[0]->seen) ? 'read' : 'unread') . '">';
$output.= '<span class="subject">' . imap_utf8($overview[0]->subject) . '</span> ';
$output.= '<span class="from">' . imap_utf8($overview[0]->from) . '</span>';
$output.= '<span class="date">on ' . imap_utf8($overview[0]->date) . '</span>';
$output.= '</div>';
/* output the email body */
$output.= '<div class="body">' . imap_utf8($message) . '</div>';
}
echo $output;
}
imap_close($inbox);
?>
</body>
</html>
Example output:
Je=B6li chcesz uatrakcyjni=E6 wygl=B1d swojej skrzynki odbiorczej za pom= oc=B1
I expect:
Jeśli chcesz uatrakcyjnić wygląd swojej skrzynki odbiorczej za pomocą
The email is not in UTF-8 (quoted), so imap_utf8
does not work here.
But a mistake earlier on is that you don't check which encoding is used with the email.
How to fix?
This looks like Quoted-Printable encoding.
Simply replace your imap_utf8
with quoted_printable_decode and use iconv to convert from the (presumably) polish charset to utf8.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.