Avatar billede greenie Nybegynder
14. juli 2012 - 12:22 Der er 10 kommentarer

utf-8 8859-1 osv osv

Hej,
Vi har store problemer med at få tegnene i de mails vi modtager til at vise sig korrekt. Vi har fået anbefalet at bruge utf-8 uden bom og det gør vi.. Men hvorfor vises æøå så underligt på nogen sider og ikke andre, og de vises også forskelligt hvis vi sammenligner en side sammen med en mail ?!?

Som mailformularen, eller den del der sender mailen ser ud..
function mail_utf8($to, $subject='Intet emne', $message='', $from='', $cc='', $bcc='') {
    $from = escapeAddr($from);
    $header = 'From: '.$from.PHP_EOL
            . 'Return-Path: '.$from.PHP_EOL
            . 'Reply-To: '.$from.PHP_EOL
            . 'MIME-Version: 1.0'.PHP_EOL
            . 'Content-type: text/plain; charset=UTF-8'.PHP_EOL
            . 'X-Mailer: PHP/'.phpversion().PHP_EOL
            . 'Content-Transfer-Encoding: 8bit'.PHP_EOL;
    if ($cc!='') $header .= 'Cc: '.escapeAddr($cc).PHP_EOL;
    if ($bcc!='') $header .= 'Bcc: '.escapeAddr($bcc).PHP_EOL;
    $header .= PHP_EOL;
    return mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', $message, $header);
}


Mails ser sådan ud:
måneskin, været, kørende

Nogle sider ser således ud:
L�s (en sort firkant på spidsen med et spørgsmålstegn inden i)

Det der forvirrer mig er, at alle siderne henter en header og en footer. Headeren ser således ud .. efter en masse php og funktioner ..

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>

<script type="text/javascript" src="/js/scripts.js"></script>
<link rel="stylesheet" type="text/css" href="/highslide/highslide.css" />
<link rel="stylesheet" type="text/css" href="/css/sange.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><? echo $page_title; ?></title>
</head>
<body>


Så hvad (/%#/&%¤ er der galt ?!?

Håber I kan hjælpe os inden vi taber al håret..
Avatar billede olsensweb.dk Ekspert
14. juli 2012 - 13:11 #1
jeg går udfra at escapeAddr() er en af de mange functioner der ligger i toppen du bare ikke har vist.
os "gamle" kender efterhånden OLeBole's Function mail_utf8(), (http://www.eksperten.dk/spm/961816 #3) men håber stadig han skriver en guide vi kan henvise til :)

>Nogle sider ser således ud:
dvs det er ikke alle sider.

includerer de nogle andre php filer ??, er disse incodet som UTF8?? (det skal de være)

dine externe js filer er de UTF8 incodet ??
ellers skal der tilføjes et charset, eks
<script src="/js/functions.js" type="text/javascript" charset="ISO-8859-1"></script>
<script src="/js/validate.js" type="text/javascript" charset="UTF-8"></script>

dine CSS filer skal også være UTF8 incodet

hvis du anvender db skal dine data sendes i UTF8

Kort sagt UTF8 hele vejen rundt, så burde det virker
Avatar billede poloen Nybegynder
14. juli 2012 - 13:39 #2
Der er forskel på utf-8 & utf-16.
Avatar billede olebole Juniormester
14. juli 2012 - 14:39 #3
<ole>

#2: Præcis - så derfor er der ingen i tråden, der besværer sig med utf-16 i denne forbindelse  =)

@greenie: For det første skal du nok vælge en realistisk DocType. Du bruger en XHTML 1.0 Strict DTD, men sender dokumentet som HTML. Den DocType, du postulerer i koden, kræver dokumentet bliver sendt med en speciel MIME-type, så det hænger ikke sammen.

Med mindre du bruger XML i dokumentet, har du ikke noget at bruge XHTML til - heller ikke i alm. webdokumenter. XHTML er uden sammenligning det mest misforståede, som nogensinde har ramt WWW. Alle undersøgelser, jeg har lavet og set, viser, at langt under 1% af samtlige dokumenter, som udgiver sig for XHTML, overholder standarden og kan parses af en XML-parser (som er den eneste årsag til at bruge XHTML)!  *o)

Hvad er dokumenterne gemt som (utf-8 eller ANSI)? Jeg spørger ikke om, hvad du tror, de er gemt som ... tjek det, please  =)

Hvis der er tale om indhold fra en database, hvilket tegnsæt er databasen så sat op til at bruge - og ikke mindst: Hvilke kollationer bruges?

Hvad er de dokumenter, som leverer data til en evt. DB gemt som?

Er der på et tidspunkt skiftet tegnsæt og/eller kollationer på tabeller i en evt. DB - og er du opmærksom på, at allerede eksisterende indhold ikke derved ændres?

/mvh
</bole>
Avatar billede scootergrisen Nybegynder
14. juli 2012 - 21:05 #4
Prøv og kom med hele koden.
Avatar billede olebole Juniormester
14. juli 2012 - 21:38 #5
#4: Det handler ikke om koden. Det er et spørgsmål om encoding af mailens indhold
Avatar billede scootergrisen Nybegynder
14. juli 2012 - 21:45 #6
#5 > Det handler nok også om decoding af mailens indhold.
Avatar billede olebole Juniormester
14. juli 2012 - 21:56 #7
Præcis! Men temmelig usandsynligt om koden  *o)
Avatar billede scootergrisen Nybegynder
15. juli 2012 - 01:24 #8
#7 > Er det usandsynligt at emailen skal dekoden eller hvad mener du ?
Avatar billede olebole Juniormester
15. juli 2012 - 16:37 #9
Jeg undkylder det 'Præcis', jeg skrev #7. Det skyldes, jeg læste forkert og misforstod, hvad du skrev. Nu, hvor jeg har læst, hvad du faktisk skrev, får jeg ingen mening ud af det.
Avatar billede inteeeL Nybegynder
16. juli 2012 - 02:41 #10
Eftersom jeg var med til at lave ovenstående, kan jeg godt lige forklare, hvad der gik galt. Tidligere benyttede spørgeren ISO-8859 i meta'en, og filerne var ikke gemt i format UTF-8. Den enkelte fil (mailform.php) var til gengæld gemt i format UTF-8 (Uden BOM) med det formål at kunne harmonere med (oleboles) mailfunktion. De data, der sendes fra ISO-8859 filen skulle altså gennemtvinges en UTF-8 encoding - og det gjorde jeg med hhv. utf8_encode og decode. Indholdet blev altså renset om man så må sige, hvilket gik hen og fungerede ganske fint.

Spørgeren har efterfølgende ændret meta til UTF-8, men filerne var endnu ikke blevet gemt i format UTF-8. Derfor blev der skabt splid mellem tegnsætningen og de funktionerne, som nu er unødvendige. Problemet lå altså i indholdet (det data, der skulle behandles).
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester