Zur Navigation

Einige Menüs funktionieren nicht [2]

htaccess problem?

11 Jimmy

Ich habe mit notepad++ die index.php geöffnet, und beim öffnen wahr kein Auswahl für zeichensätze vorhanden. ich habe beim notepad++ in den menüs etwas rumgeschaut, aber leider nichs gefunden wo ich den Zeichensatz iso-8859-1 öffnen kann.

02.02.2008 13:30

12 Jörg Kruse

Ja, Notepad++ öffnet die Datei natürlich korrekt als utf-8 - aber eine Entfernung des BOM müsste dort möglich sein. Versuche mal nach dem Öffnen unter dem Menüpunkt "Format" -> "Kodiere als ANSI" (oder so ähnlich) - danach müsste der BOM entfernt sein..

02.02.2008 13:56 | geändert: 02.02.2008 13:57

13 Jimmy

Hallo. Es hat sich erledigt. Ich habe lange zeit rumgegoogelt und hab die script gefunden.
Diesen Script sollte man in den Quelltext am anfang einfügen und es werden alle BOM entfernt. Es ist wirklich ein super script, solltet ihr am besten selber testen.
Hier das Script.



<?php
/* CL, 2006-03-21
Entfernt führende Byte-Order-Mark aus den in $filetypes
gegebenen Dateitypen. Prüft vorher, ob tatsächlich ein
BOM vorhanden ist.
*/
set_time_limit(0);
$auth=false;
if (@$_REQUEST['opt']=='StGsawmYknAmRcvP') {
$auth=true;
}

// Zu fixende Dateitypen können beliebig erweitert werden.
$filetypes = array('html', 'htm', 'php');


// Falls file_put_contents nicht definiert ist:
if (!function_exists('file_put_contents')) {
function file_put_contents($file, $content) {
$fp = fopen ($file, 'w');
fwrite($fp, $content);
fclose($fp);
}
}

// Start im aktuellen Verzeichnis, '.'
fixBom('.');

function fixBom($path) {
global $filetypes;
global $auth;
if ($auth) echo "<br /><b>Dir: $path</b><br />";
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
if ($file != '.' && $file != '..') {
flush();
if (is_dir($path.'/'.$file)) {
/* Falls die Datei ein Verzeichnis ist, wird
die Funktion fixBom() auf dieses V.
angewendet.
*/
fixBOM($path.'/'.$file);
} else {
/* Hier wird geprüft ob die Datei den gegebenen
Typen entspricht - wenn ja, wird sie mit
clean() gereinigt. Clean() Prüft, ob BOMs
vorhanden sind.
*/
if (in_array(fileext($file), $filetypes)) {
clean($path.'/'.$file);
if ($auth) echo "&nbsp;&nbsp;&nbsp;$file";
}
else {if ($auth) echo ' .';}
}
}
}
closedir($handle);
}
}
/* Diese Funktion liefert die Erweiterung von $filename */
function fileext($filename) {
$ext = substr($filename, strrpos($filename,'.')+1);
return $ext;
}
/* Prüft, ob $file ein BOM enthält und löscht es ggfs. */
function clean($file) {
global $auth;
$fcontent = file_get_contents($file);
if (substr($fcontent, 0, 3)==chr(hexdec('EF')).chr(hexdec('BB')).chr(hexdec('BF'))) {
file_put_contents($file, substr($fcontent, 3));
if ($auth) echo '<b>*</b><br />';
} else {
if ($auth) echo '-<br />';
}
}
?>

Gruss

Jimmy

02.02.2008 20:31

14 Jörg Kruse

Wenn du es so wegbekommen hast, ist es auch ok :) Ansonsten wäre es aber vielleicht gut, im Vorfeld das Problem schon dadurch zu vermeiden, indem ein Editor verwendet wird, der utf-8 ohne BOM schreibt - was bei vielen Windows-Editoren (im Gegensatz zu den Editoren unter Linux) oft leider nicht möglich oder etwas umständlich zu handhaben ist. Vielleicht kann hier ein Windows-Anwender auch noch geeignete Editoren empfehlen bzw. eine genauere Anleitung geben, wie man den BOM dort ausschaltet

03.02.2008 09:07

15 Jimmy

Hallo.
Nachdem ich das BOM entfernt habe werden in meiner AGB auf www.autobooster.de die Umlaute Ö- Ü -Ä- falsch eingezeigt.
Was ist da jetzt passiert? Muss ich es jetzt das AGB neu schreiben ohne BOM, oder kann mann da was machen?

gruss

Jimmy

03.02.2008 16:21

16 Jörg Kruse

Das Problem ist, dass in der Meta-Angabe zwar der richtige Zeichensatz angegeben ist:

<meta  content="text/html;  charset=UTF-8"  http-equiv="Content-Type">

Leider übermittelt der Server im HTTP-Header aber folgende Angabe:
Content-Type: text/html; charset=iso-8859-1
... und der HTTP-Header hat hier Vorrang, so dass der BRowser versucht, die Seite in iso-8859-1 anzuzeigen

Mit folgendem Eintrag in der .htaccess könntest du versuchen, die Header-Angabe zu überschreiben

AddType 'text/html; charset=UTF-8' html

Damit sollte für alle html Dateien der Charset utf-8 übermittelt werden

03.02.2008 17:10 | geändert: 03.02.2008 17:13

17 Jimmy

Hallo.
Ich habe mit der folgendem Eintrag in die .htaccess eingetragen.
AddType 'text/html; charset=UTF-8' html

Hat nicht funktioniert. Ich habe in verschiedenen stellen diesen Eintrag kopiert, hat aber nicht geklappt. Gibt es eine bestimmte stelle wo ich es reinkopieren soll?




Das ist mein .htaccess!

ErrorDocument 401 /index.php?module=main&func=404
ErrorDocument 403 /index.php?module=main&func=404
ErrorDocument 404 /index.php?module=main&func=404
ErrorDocument 500 /index.php?module=main&func=404

RewriteEngine On

Options +FollowSymLinks

#
# Administration
#

RewriteRule ^admin$ /index.php?module=admin&func=user
#AuthName "Administration"                                                      
#AuthType Basic                                                         
#AuthUserFile .htpasswd 
#require valid-user                                                     

#
# Statische Texte
#

RewriteRule ^kontakt.html /index.php?func=kontaktanfrage
RewriteRule ^impressum.html /index.php?module=text&text=impressum
RewriteRule ^agb.html /index.php?module=text&text=agb 
RewriteRule ^agbhaendler.html /index.php?module=text&text=agb
RewriteRule ^werbung.html /index.php?module=text&text=werbung
RewriteRule ^preisliste.html /index.php?module=text&text=preisliste
RewriteRule ^sitemap.html /index.php?module=text&text=sitemap
RewriteRule ^unternehmen.html /index.php?module=text&text=unternehmen
RewriteRule ^haendlerinfo.html /index.php?module=text&text=haendlerinfo


#
# Funktionen
# 
RewriteRule ^anbieten.html /index.php?module=announce&func=new&bereich=1
RewriteRule ^pkw-anbieten.html /index.php?module=announce&func=new&bereich=1
RewriteRule ^motorraeder-anbieten.html /index.php?module=announce&func=new&bereich=2
RewriteRule ^wohnmobile-anbieten.html /index.php?module=announce&func=new&bereich=3
RewriteRule ^lkw-anbieten.html /index.php?module=announce&func=anbieten

RewriteRule ^agrarfahrzeuge-anbieten.html /index.php?module=announce&func=new&bereich=4
RewriteRule ^anhaenger-anbieten.html /index.php?module=announce&func=new&bereich=5
RewriteRule ^auflieger-anbieten.html /index.php?module=announce&func=new&bereich=6
RewriteRule ^baumaschinen-anbieten.html /index.php?module=announce&func=new&bereich=7
RewriteRule ^lkw-bis-7,5-anbieten.html /index.php?module=announce&func=new&bereich=8
RewriteRule ^busse-anbieten.html /index.php?module=announce&func=new&bereich=9
RewriteRule ^sattelzugmaschinen-anbieten.html /index.php?module=announce&func=new&bereich=10
RewriteRule ^stapler-anbieten.html /index.php?module=announce&func=new&bereich=11
RewriteRule ^lkw-ueber-7,5-anbieten.html /index.php?module=announce&func=new&bereich=12




RewriteRule ^parkplatz.html /index.php?module=list&func=parkplatz
RewriteRule ^mein-inserat.html /index.php?module=announce&func=meininserat

RewriteRule ^suche.html /index.php?module=suche&bereich=1
RewriteRule ^pkw-suchen.html /index.php?module=suche&bereich=1
RewriteRule ^motorraeder-suchen.html /index.php?module=suche&bereich=2
RewriteRule ^wohnmobile-suchen.html /index.php?module=suche&bereich=3
RewriteRule ^lkw-suchen.html /index.php?module=suche

RewriteRule ^agrarfahrzeuge-suchen.html /index.php?module=suche&bereich=4
RewriteRule ^anhaenger-suchen.html /index.php?module=suche&bereich=5
RewriteRule ^auflieger-suchen.html /index.php?module=suche&bereich=6
RewriteRule ^baumaschinen-suchen.html /index.php?module=suche&bereich=7
RewriteRule ^lkw-bis-7,5-suchen.html /index.php?module=suche&bereich=8
RewriteRule ^busse-suchen.html /index.php?module=suche&bereich=9
RewriteRule ^sattelzugmaschinen-suchen.html /index.php?module=suche&bereich=10
RewriteRule ^stapler-suchen.html /index.php?module=suche&bereich=11
RewriteRule ^lkw-ueber-7,5-suchen.html /index.php?module=suche&bereich=12

RewriteRule ^login.html /index.php?module=user&func=login
RewriteRule ^registrieren.html /index.php?module=user&func=register





RewriteRule test(.+).html /index.php

RewriteRule (.*)/detail/(.+).html /index.php?module=announce&func=show&id=$2

RewriteRule ^suchindex.html /index.php?module=list&mode=all

03.02.2008 19:40

18 Rudy

Gib mal ganz am Anfang im Skript
header("Content-Type: text/html; charset=UTF-8");
aus, damit der Browser merkt, dass er gleich utf-8 bekommt.
Jörgs AddType-Vorschlag wäre die htaccess-Variante dieses Befehls, vielleicht ignoriert die Dein Server.

03.02.2008 19:44

19 Jimmy

header("Content-Type: text/html; charset=UTF-8");

Danke, so hat es funktioniert!

Hier wird wirklich geholfen! Toll hier.

Danke nochmal.
Ich bin bestimmt gleich wieder da, mit dem nächsten Problem.

gruss
Jimmy

03.02.2008 19:54

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]