ÅÄÖ från formulär -> fil = jättefel

Tråden skapades och har fått 4 svar. Det senaste inlägget skrevs .
1

Hej
Har ett formulär på en sida (html+php), i det formuläret skriv information in som sedan sparas i en textfil i min filstruktur. Men, jag får grymt fel encoding på tecken som ÅÄÖ, åäö. Får inte rätt på det.

På min formulärsida (alla sidor har charset="UTF-8") har jag ett formulär enl. följande.

<form id="FormName" action="form.php" method="post" name="FormName" enctype="application/x-www-form-urlencoded" lang="sv">
<input type="text" name="myText1" size="24" />
<input type="submit" name="submitButtonName" />
</form>

Vid submit skickas resultatet i formuläret till en annan sida, form.php, där innehållet i formuläret skrivs till en textfil, sen så händer det lite saker med textfilen och det skickas tillbaka lite info till sidan.

Variablerna från formuläret skrivs till fil enl följande:

<?php   
$file = "Templates/newfile.txt";    
if (!$file_handle = fopen($file,"w")) { echo "Cannot open file"; }   

if (!fwrite($file_handle, $myText1)) { echo "Cannot write to file"; }   
if (!fwrite($file_handle, "	")) { echo "Cannot write to file"; }   
fclose($file_handle);   
?>

Men, av nån anledning, så får jag inte rätt encoding i den textfil (skärmdump bifogad) som skapas.

Någon som har nåt tips om hur jag på bästa sätt tar ett formulär, skriver dess innehåll till disk vid submit och där ÅÄÖ, åäö, ß, Ü osv fungerar...?

  • Medlem
  • Mölndal
  • 2006-04-09 21:21

Charset (antar att du menar meta-taggen i HTML) används bara om servern själv inte sänder ut nån kodningsinformation. Kolla därför om du kan styra webserverns Encoding-header.

Ursprungligen av memark:

Charset (antar att du menar meta-taggen i HTML) används bara om servern själv inte sänder ut nån kodningsinformation. Kolla därför om du kan styra webserverns Encoding-header.

Menar du i httpd.conf eller i php.ini?

  • Medlem
  • Mölndal
  • 2006-04-09 22:27

Prova först att i Firefox ta properties på din sida och se vilken encoding som faktiskt skickas av servern. Är den rätt är problemet ett annat, och något för php-folket att ta tag i (dit hör inte jag).

Jag ser att det i php.ini finns

; As of 4.0b4, PHP always outputs a character encoding by default in
; the Content-type: header.  To disable sending of the charset, simply
; set it to be empty.
;
; PHP's built-in default is text/html
default_mimetype = "text/html"
;default_charset = "iso-8859-1"

Den sista kan du kanske avkommentera och ändra till UTF-8 (eller hur det nu heter i php).

  • Medlem
  • Norrköping
  • 2006-04-09 22:37

Allt är som det ska. Textfilen i din skärmdump är i UTF-8, men TextEdit har tolkat den med MacRoman-glasögon. I TextEdits öppningsdialog, välj Unicode (UTF-8) i menyn Teckenkodning för ren text.

1
Bevaka tråden