Komisches Zeichen wird ausgegeben ()

Hi
Irgendwie bin ich zu blöd, ich habs jetzt ohne BOM gespeichert und auch das mit dem header eingefügt, aber es funktoniert trotzdem nocht nicht.
Ich weiß einfach nicht mehr weiter :(
Thx
 
Ich hab jetzt am Anfang mal nur die r_news.php ohne BOM gespeichert, soll ich die home.php (dort wird die r_news.php in den content bereich included) auch ohne BOM speichern?
Thx
 
Bei UTF-8 ist die Byte Order Mark nicht wichtig, da es nur eine Byte-Reihenfolge gibt. So kann die BOM nur als Indiz für die UTF-8-Kodierung dienen. Da die Kodierung allerdings explizit im HTTP-Header angegeben werden sollte (dazu dient das „Content-Type“-Header-Feld), ist sie in diesem Fall ganz nutzlos und kann und sollte sogar weggelassen werden, damit es nicht (wie in deinem Fall zu sehen) zu Fehlinterpretationen kommt. Wichtig ist jedoch weiterhin, dass die verwendete Kodierung explizit im HTTP-Header-Feld „Content-Type“ angegeben wird und nicht erst im Dokument selbst.
 
Hi
Ich hab ja die Codierung im Header angegeben, hier ist meine home.php dort wird die r_news.php includet.
PHP:
<?php
ob_start(); 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>

<div id="container">
<div id="header"></div>
<div class="leftCol">
<?php include("navigation.php"); ?>
</div>
<div class="rightCol">
<div id="content">


<?php

  switch($_GET['site']) {
    case "Links":include("Links.php");
    break; 
    case "FAQ":include("FAQ.php");
    break; 
    case "Partner":include("Partner.php");
    break; 
    case "News":include("News.php");
    break; 
	
    default:
      include("r_news.php");
  };
  
?> 




</div>
<div id="footer">
<div align="center" class="Stil3"><?php include 'footer.php'; ?></div>
</div>
</div>
<div class="clear">&nbsp;</div>
</div>
</body>
</html>

<?php
ob_end_flush();
?>
Und hier ist mein Code von der r_news.php:
PHP:
<?php
include ("configs/config.inc.php");

$sql = mysql_query("SELECT * FROM `News` ORDER BY `Datum` DESC LIMIT 0,30");  

while ($row = mysql_fetch_assoc($sql))
{
$id = $row["Id"];
$Titel = $row["Titel"];
$News = $row["News"];
$Datum = $row["Datum"];    

echo '<div class="border">
<div class="comment_top">'.$row['Titel'].'</div>
<div class="comment_top">(ID: '.$id.')&nbsp; eingetragen am '.date('d.m.Y / H:i:s', $row['Datum'] == '' ? 0 : $row['Datum']).'</div>
<div class="comment">'.nl2br($row['News']).'</div>
</div>
&nbsp;<br>
&nbsp;<br>';

 }
 
?>

Hoffe ihr könnt mir helfen.
Thx
 
Der HTTP-Header ist keinesfalls mit dem Kopfbereich eines HTML-Dokuments zu verwechseln! Denn der Kopfbereich des HTML-Dokuments enthält nur Metadaten über den eigentlichen Dokumentkörper, während der HTTP-Header Metadaten über den gesamten Nachrichtenkörper, also das gesamte HTML-Dokument, enthält. Und enthält der HTTP-Header nicht genügend oder gar falsche Informationen, kann der Nachrichtenkörper gar nicht oder nur falsch verarbeitet werden und es kann unter anderem zu Fehlinterpretationen kommen. Und genau das ist die genannte Zeichenfolge „“, nämlich eine Fehlinterpretation, da angegebene Zeichenkodierung nicht mit der tatsächlich verwendeten übereinstimmt.

Deshalb ist es notwendig, die verwendete Zeichenkodierung im HTTP-Header anzugeben und nicht erst im Nachrichtenkörper selbst. Und genau das ist mit folgender bereits genannten Anweisung möglich:
PHP:
header('Content-Type: text/html; charset=utf-8');
Wichtig ist, dass diese Anweisung noch vor jeglicher Ausgabe steht, da sonst der HTTP-Header nicht mehr verändert werden kann. Wird die Ausgabe allerdings gepuffert (ob_start()-Funktion), kann diese Anweisung auch noch nach einer Ausgabe erfolgen, solange die gepufferte Ausgabe nicht schon gesendet wurde.
 
Ich hatte genau das gleiche Problem, allerdings habe ich es anders gelöst. Ich hatte es mit einem anderen Editor geöffnet ich glaube es war Ultra edit bin mir aber nicht sicher, und dort habe ich merkwürdiger weise dann am Anfang vor allen andern Zeichen das hier gefunden "" :suspekt:
Das merkwürdige war, der normale Windows Editor hat es nicht angezeigt..naja jetzt klappt es bei mir. :confused:
 
Ob diese Bitsequenz der UTF-8 Byte Order Mark (0xEF 0xBB 0xBF) dargestellt wird, hängt von der Zeichenkodierung ab, mit der das Dokument dekodiert wird. Denn nur in UTF-8 hat diese Bitsequenz eine besondere Bedeutung und wird deshalb nicht dargestellt. Bei anderen Zeichenkodierungen – so etwa der Zeichenkodierung des ISO-8859-1-Zeichensatzes – hat diese Bitsequenz aber keine besondere Bedeutung und wird daher zu normalen Zeichen dekodiert, was dann beispielsweise zu „“ werden kann, da die einzelnen Bytes eben für genau diese Zeichen stehen: an der Position 0xEF steht das „ï“, an der Position 0xBB das „»“ und an der Position 0xBF das Zeichen „¿“.
 
Hi
Ich hab schon wieder ein Problem, hab gerade gemerkt, dass in meiner Db z.B. stat "Österreich" - "Österreich" steht, wie kann ich das ändern?
Thx
 

Neue Beiträge

Zurück