Avatar billede tyksen Nybegynder
14. februar 2007 - 22:27 Der er 4 kommentarer og
1 løsning

Gem txt-fil i UTF-8 kodning i online redigeringsform

Hej Eksperter

Jeg bruger denne form til at redigere en txt fil direkte på nettet, så jeg ikke behøver at uploade hver gang jeg skal lave en opdatering til min hjemmeside:

******************************

<?
$filer = "tekst.txt";

$active_file=$_GET[filename];

if($_POST[action]=="Gem") {
print "$_POST[filename] gemt (".date("d/m H:i").").";
$fp=fopen($_POST[filename],"w+");
fputs($fp,$_POST[data]);
fclose($fp);
$active_file=$_POST[filename];
}
print "<form method=\"post\">
<table width=\"100%\">
<tr>
<td valign=\"top\">Filnavn</td>
<td width=\"100%\"><select name=\"filename\" onchange=\"document.location.href='$PHP_SELF?filename='+this.options[this.selectedIndex].value\">
";

$filer = explode(",",$filer);

for($i=0;sizeof($filer)>$i;$i++) {
print "<option value=\"$filer[$i]\""; if($active_file==$filer[$i]) { print "selected"; } print ">$filer[$i]</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td valign="top">Filindhold</td>
<td>
<textarea name="data" style="width:100%" rows=25><? @readfile($active_file); ?></textarea><br>
<input name="action" type="submit" value="Gem">
</td>
</tr>
</table>
</form>


******************************

Nu bruger jeg så txt-filen til en flash-hjemmeside jeg har lavet. Her er der brug for, at txt-filen bliver gemt i UTF-8, hvis min flash hjemmeside, skal kunne gengive de æ,ø og å'er, som jeg skriver i min tekst.

Kan jeg ændre php-koden, så txt-filen bliver gemt i UTF-8 kodning?

I må meget gerne forklare helt konkret hvad jeg skal gøre for at få det til at virke - er ikke så sej til php - redigeringsformen er en jeg har fået foræret herinde på eksperten ved et tidligere spørgsmål.

Håber i kan hjælpe.

MVH Mathias
Avatar billede pidgeot Nybegynder
14. februar 2007 - 22:32 #1
Hvis din side bliver vist i browseren som UTF-8, skulle det ske af sig selv. Det kan du eks. gøre ved at skrive:
header('Content-Type: text/html; charset=utf-8');
ind i din PHP-kode før noget output. Der er andre måder, men dette er den nemmeste, og den der med størst sandsynlighed virker.

Det forudsætter så naturligvis også at din PHP-fil er gemt som UTF-8, da du ellers får problemer med æ, ø og å i den.

(Og nej, du skal ikke ændre din Flash-kode hvis nogle siger du kan sætte den til at bruge systemets codepage - for det duer ikke hvis systemet bruger en anden end du forventer, og så er du tilbage hvor du startede.)
Avatar billede pidgeot Nybegynder
14. februar 2007 - 22:37 #2
I øvrigt skal du lige være opmærksom på at hvis du gemmer dit script som UTF-8 med Notepad (og enkelte andre editorer), så smider den et såkaldt Byte Order Mark ind i starten af filen (fordi den konverterer fra rå Unicode, hvor det er vigtigt at vide hvilken rækkefølge tegnkoderne er skrevet i). Dette skal du fjerne inden scriptet kan virke, fordi PHP ikke ved det skal filtreres fra, enten manuelt med en hex-editor (eller text-editor der ikke forstår Unicode), eller ved at bruge en editor der IKKE sætter sådan et BOM til at gemme din fil som UTF-8.

Hvis du ved du aldrig får brug for accenter og lign. i dit script, behøver du ikke gøre noget som helst med filen - så længe der ikke bruges tegn udover tegnsætning, tal og A-Z, så er enhver "normal" tekstfil samtidigt UTF-8.
Avatar billede tyksen Nybegynder
14. februar 2007 - 22:40 #3
Tak for den hurtige hjælp!
Som sagt, så er jeg virkelig ikke den store php-ekspert - kan jeg ikke lokke dig til at skrive den linje jeg skal indsætte i min php-kode, så jeg får helheden og kan se helt præcist, hvor den skal sidde?
- Kan du ikke gøre det som et svar, så jeg kan give dig pointene, når jeg har fået det til at virke?
Avatar billede pidgeot Nybegynder
14. februar 2007 - 22:42 #4
Allerøverst i filen skriver du bare

<?PHP
header('Content-Type: text/html; charset=utf-8');
?>

Hvis du i forvejen starter med PHP-kode som det første (hvilket det ser ud til hvis du viser hele filen der), sætter du bare linien ind umiddelbart efter <?. Det kan stort set ikke gøres forkert, med mindre du bevidst går efter at lave det forkert :)
Avatar billede tyksen Nybegynder
14. februar 2007 - 22:47 #5
Det er super - det fungerer perfekt - og jeg lod være med bevidst at lave det forkert:)
Mange tak for hjælpen!
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

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