Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

PHP - Encoding - Problem

Frage Entwicklung

Mitglied: Bierkistenschlepper

Bierkistenschlepper (Level 2) - Jetzt verbinden

27.07.2009, aktualisiert 15:13 Uhr, 7873 Aufrufe, 7 Kommentare

Hallo, ich habe folgendes Problem mit dem Encoding.

MySQL DB ist UTF8, Im Header steht
<!DOCTYPE html PUBLIC " -W3CDTD XHTML 1.0 Transitiona lEN"
"http:
www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="de">
<head>

<title>Stammtisch f&uuml;r Schwerh&ouml;rige Freiburg</title>
<meta http-equiv="content-type" content="text/html; charset="utf-8">

also ebenfalls UTF8.

Folgendes Problem:
Wenn ich in die DB schreibe passiert bei folgender Konfiguration des Strings in PHP unterschiedliches in IE und Opera.

$kommentar = trim($_POST['kommentar']))
IE alles klar, Opera macht aus äüöß Ã¤Ã¼Ã¶ÃŸ

$kommentar = utf8_decode(trim($_POST['kommentar']))
Opera: alles ok, IE macht aus äüöß ??

$kommentar = utf8_encode(trim($_POST['kommentar']))
Geht in beiden Browsern nicht-->klar

Aber wie zum Henker kriege ich den String in allen Browsern richtig in die DB geschrieben?

Es geht um www.shstammtisch.de
Mitglied: godlie
27.07.2009 um 15:41 Uhr
Schmeis den meta tag content-type mal raus und schick bevor du irgendwelche ausgaben machst
mal ein
01.
header("Content-Type: text/html; charset=UTF-8")
an den Browser damit der sich auskennt was da für Zeugs ankommen sollte.
Bitte warten ..
Mitglied: filippg
27.07.2009 um 15:45 Uhr
Hallo,

es geht doch um das Encoding der Daten, die der Client an den Server schickt oder? Dann ist eine encoding-Definition im Seitenheader zwar sicher nicht falsch, aber nur begrenzt hilfreich. Lösung: füge in das <form>-Tag ein "accept-charset="-Attribut ein. Damit solltest du zumindest von allen Browser das gleiche Ergebnis erhalten.

Gruß

Filipp
Bitte warten ..
Mitglied: Bierkistenschlepper
27.07.2009 um 15:59 Uhr
Ein accept-charset ist bereits da...
echo '<form action="termine.php?eid='.$event_to_show.'" method="post" accept-charset="utf-8">';
Bitte warten ..
Mitglied: Supermax
27.07.2009 um 20:24 Uhr
Schau mal mit einem geeigneten Tool (z.B. Fiddler für IE, Live HTTP Headers für Firefox), welches Encoding im HTTP-Header "Content-Type" angegeben ist. Wenn im Dokument selbst eine andere Angabe steht als der Webserver in seinen Headern ankündigt, geraten manche Browser aus dem Tritt. Standardkonform ist das Verhalten, daß die Header direkt vom Webserver Vorrang vor den Angaben im entsprechenden Meta-Tag haben.

Eventuell schafft eine .htaccess (falls der Webserver Apache zum Einsatz kommt) mit der Zeile
01.
AddDefaultCharset Off
oder
01.
AddDefaultCharset "gewünschte Codierung"
Abhilfe.
Bitte warten ..
Mitglied: Bierkistenschlepper
28.07.2009 um 00:31 Uhr
Der erste Tipp hats gebracht. Jedenfalls klappts nun in Opera, IE und FF.

Offenbar ist die Meta-Angabe nicht ganz standardkonform, jedenfalls meckert bei mir immer der Validator.

Und noch eine Frage:

Bei Emails habe ich das gleiche Problem. Ich nutze den PHPmailer. Welche Codierung sollte man bei Mails verwenden? Umlaute werden aktuell im Thunderbird als Fragezeichen dargestellt. Es handelt sich um Rein-Text-Mails ohne HTML (sonst wäre die Frage ja nicht aufgekommen)
Bitte warten ..
Mitglied: Supermax
28.07.2009 um 07:39 Uhr
Stimmt vor dem utf-8 ist das " zu viel, der HTML-Parser erkennt
01.
<meta http-equiv="content-type" content="text/html; charset="utf-8">
nur als
01.
content-type: text/html; charset=
Bezüglich der Mails solltest du das Encoding verwenden, in dem deine Texte (aus dem Script oder aus der Datenbank etc.) vorliegen. Wenn deine Programmtexte und Datenbank-Textwerte in UTF-8 vorliegen, dann nimm UTF-8, ansonsten die passende 8-bit Codierung. Die meisten modernen eMail-Clients und webmailer können problemlos mit UTF-8 codierten Mails umgehen.
Bitte warten ..
Mitglied: Bierkistenschlepper
22.12.2009 um 01:12 Uhr
Ich muss mich leider nochmals melden.

Folgendes Problem:

Datenbank ist UTF8_general_ci.

RSS-FEED ist Iso 8869-1, steht im Header und im xml-Tag. Soweit so gut. Leider verhalten sich die Browser völlig unterschiedlich.

Wenn ich nun ein utf8_decode um einen String aus der DB mache, dann passiert folgendes: Opera zeigt es korrekt an, der IE zeigt nur Fragezeichen. Der Quelltext enthält in beiden Browsern auch nur Fragezeichen und es fehlen normale Buchstaben. Warum zeigt Opera (also der HTML-Interpreter) was anderes an, als im Quelltext steht und warum steht im Quelltext keine Umlaute?

Hier ein Link zum Feed: www.shstammtisch.de/rss.php

hier ein Scnipsel Code
while($_ROW = mysql_fetch_assoc($result)){
$date = strtotime($_ROW['datum']);
$name=utf8_decode($_ROW['name']);
$description = utf8_decode($_ROW['description']);
$content = utf8_decode("Was? ".$name."\n".
"Wo? ".$_ROW['place']."\n".
"Wann? ".date("d.m.Y",$date." ab ".date("G:i", $date)."\n".
"Beschreibung: \n".$description));

und Oben steht in der Datei Stammtisch für..., also mit ü nur der Browser zeigt kein ü an.
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Windows Netzwerk
Problem mit PSexec64 von Sysinternals (2)

Frage von MaxMoritz6 zum Thema Windows Netzwerk ...

Windows Server
gelöst Problem nach DC-Installation unter Server 2012 R2 (9)

Frage von manuel1985 zum Thema Windows Server ...

Windows 10
Problem: einzige Konto gesperrt + Bitlocker aktiv (11)

Frage von Windows11 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...