24. juni 2013 - 13:12Der er
15 kommentarer og 1 løsning
Tegnsæt i indputfelter
I mine formularer støder jeg på et problem med tegnsæt i indputfelterne. HTML-delen er kodet i UTF-8 og alt står rigtigt fint med æøå på siderne. Så er der bare det, at det der skrives indputfelterne står med mærkelige tegn, hvis der bruges æøå. Det er sikkert kun et lille problem, men alligevel irriterende.
Det er det som brugeren/kunden skriver i inputfelterne. fx her http://www.bibliodan.dk/lystserien/lystserien.php. Formularen sender en mail (ikke til mig!) til firmaet med kundens bestilling og kontaktoplysninger.
Ok, så problemet er når du modtager indholdet i e-mailen? Det er sandsynligvis fordi din e-mail sendes i 7 bit.
Du kan enten løse det ved at køre værdierne gennem f.eks. utf8_decode() inden du sender dem, eller du kan ændre mailen til også at være utf8, ved at medsende en header a la denne:
Det har jeg da vist allerede, jeg tjekker det lige. Hos mig står der følgende som vist er det samme. <head> <meta http-equiv='content-type' content='text/html; charset=utf-8'/>
Når jeg tester siderne, bruger jeg et andet webhotel og jeg kan konstatere, at det ene webhotel skriver korrekt. . . .men det andet gør ikke!
De fleste e-mail-klienter er rigtigt irriterende at arbejde med og kan godt finde på at bortfiltrere den slags HTML af sikkerhedshensyn, dovenskab, etc.
Nej, webhotellet tvinger mig til at sende via class.phpmailer.php og class.smtp.php med host og kode mm. ellers ryger bestillingerne i spam eller bliver afvist. Det var en hård nød at knække, men nu fungerer det.
Det viser sig at problemet for det meste kun er der i echo-meddelelsen: echo "<h3> Formularen er blevet sendt med disse oplysninger: <br/> Navn: ".$navn." ".$adresse." ".$postnummer." ".$by."<br/> E-mail: ".$email." Emne: ".$emne."<br/> om kort tid modtager du en e-mail med din bestilling</h3>"; Kan jeg formattere den med UTF-8?
Det mest optimale ville være at du undersøgte om din server sender en UTF-8 header som default og at alle dine tekstfiler (php, html, css, js, osv.) er encoded i UTF-8.
Hvis det er tilfældet, skal du meget sjældent bekymre dig om encoding overhovedet, medmindre du henter og læser ekstern data.
Hvis det er en Apache-server du sidder på, kan du tilføje følgende linie i din .htaccess-fil, for at sende en UTF-8 header:
AddDefaultCharset utf-8
Nu ved jeg ikke hvilken teksteditor du bruger, men der burde være en slags "egenskaber", "encoding" eller "formatering" hvor du kan konvertere dine filer til "utf-8 without BOM (byte order mark)".
Hvis du ikke gider gå det igennem fra bunden og det bare skal virke nu og her, så prøv noget lignende dette:
Jeg bruger Notepad++ for det meste. Før brugte jeg dreamweaver MX 2004. For et par år siden skrev jeg alle mine filer om til UTF-8(uden BOM), så de er testet alle sammen. det webhotel, vi bruger er tdc Webmore og så vidt jeg ved er det en Apache-server. Jeg vil afprøve din ide.
Jeg prøver lige at uddybe problemet. Før skrev jeg php-koden sammen med html-delen. Nu har jeg separeret formularen i en formularfil(html) og en responsefil(PHP). Det har rigtig mange fordele. Men dog denne ene fejl: Da jeg havde det hele samlet var echo-meddelelsen, der fortæller brugeren at formularen er sendt, i dansk tegnsæt (UTF-8 som resten af formularen). Når den nu sendes fra responsefilen er den i et tegnsæt, der ikke kan vise æø og å. Jeg har afprøvet det på to forskellige webhoteller med samme resultat.
Somme tider skal man lige prøve at formulere problemet - og så dukker løsningen op imens man formulerer problemet. jeg indsatte følgende header øverst i formular(PHP)delen header('Content-type: text/html; charset=utf-8');
Og så blev problemet løst!
men jeg vil ikke give mig selv point, så hvis didakt vil give lyd, så får du pointene for din interesse. :-)
Jeg var også ved at løbe tør for "blindforslag". Med den løsning du valgte, burde det også have fungeret med .htaccess eller ved at konvertere outputtet til iso, medmindre du inkluderer et eller andet som sætter en header eller ændrer nogle settings.
Nå anyways, det vigtigste er jo at det virker for dig.
Ja, løsningen var jo næsten for simpel. Måske skal din kode med .htaccess placeres et andet sted, end der, hvor jeg satte den. Tak for din interesse for problemet.
Synes godt om
Ny brugerNybegynder
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.