Guten Tag,
viele werden beim Lesen dieses Posts wahrscheinlich denken: Bitte nicht schon wieder!
Ich habe eine Web-Anwendung in PHP programmiert, die Daten aus einer MySQL-Datenbank holt und auch wieder reinschreibt. Leider gibt es da Probleme mit sämtlichen Sonderbuchstaben.
Gebe ich versuchsweise über eines meiner HTML-Formulare z. B. "ßßß" ein, finde ich beim Aufrufen der Datenbank über phpMyAdmin im entsprechenden Feld den Ausdruck "ßßß" wieder. Der gleiche Ausdruck steht dann auch in den PDF-Dateien, die ich aus der Web-Anwendung heraus erzeuge.
Die Ausgabe als HTML innerhalb der Anwendung funktioniert dann allerdings wieder. Da wird als "ßßß" angezeigt, wie ursprünglich eingegeben.
Nach der Lekture diverser Threads zu diesem Thema habe ich schon Folgendes umgesetzt:
1) Ein besonderes PHP-Skript, das den einleitenden HTML-Code für alle meine Seiten enthält und das ich über die PHP-Skripte einbinde, beginnt wie folgt:
2) Meine CSS beginnt mit
3) Meine .htaccess-Datei, die in meinem Hauptverzeichnis liegt, also demVerzeichnis, wo auch meine index.php ist, sieht wie folgt aus:
4) Nach dem Verbindungsaufbau mit der Datenbank lege ich utf8 als Zeichensatz fest:
5) Alle meine HTML-Formulare beginnen mit:
6) Alle meine Tabellen und varchar-Tabellenspalten haben als Kollation utf8_general_ci.
7) BOMs habe ich schon alle ausgeflöht, weil die PDF-Generierung sonst gar nicht funktionieren würde.
Was mache ich falsch? Habe ich diese Sachen alle an die falsche Stelle programmiert, so dass sie irgendwie nicht berücksichtigt werden?
Manche Skripte rufe ich mit sowas auf wie
und binde anschließend die besagte Datei für einleitenden Code ein, die ja wieder den header()-Befehl für UTF8 enthält. Wird der zweite header aus der inkludierten Datei dadurch irgendwie ignoriert oder so?
PHPMyAdmin sagt, dass meine Datenbank als Ganzes die Kollation utf8_unicode_ci hat, muss ich das vielleicht auch noch auf utf8_gneral_ci ändern? Und wenn ja, wie?
Ich würde mich sehr über Lösungsvorschläge von Euch freuen.
Vielen Dank
viele werden beim Lesen dieses Posts wahrscheinlich denken: Bitte nicht schon wieder!
Ich habe eine Web-Anwendung in PHP programmiert, die Daten aus einer MySQL-Datenbank holt und auch wieder reinschreibt. Leider gibt es da Probleme mit sämtlichen Sonderbuchstaben.
Gebe ich versuchsweise über eines meiner HTML-Formulare z. B. "ßßß" ein, finde ich beim Aufrufen der Datenbank über phpMyAdmin im entsprechenden Feld den Ausdruck "ßßß" wieder. Der gleiche Ausdruck steht dann auch in den PDF-Dateien, die ich aus der Web-Anwendung heraus erzeuge.
Die Ausgabe als HTML innerhalb der Anwendung funktioniert dann allerdings wieder. Da wird als "ßßß" angezeigt, wie ursprünglich eingegeben.
Nach der Lekture diverser Threads zu diesem Thema habe ich schon Folgendes umgesetzt:
1) Ein besonderes PHP-Skript, das den einleitenden HTML-Code für alle meine Seiten enthält und das ich über die PHP-Skripte einbinde, beginnt wie folgt:
Code:
<?php header( 'content-type: text/html; charset=utf-8' ); echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'; echo '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">'; echo '<head>'; echo '<link rel="stylesheet" type="text/css" href="versandkontrolle.css"></link>'; echo '<style type="text/css"></style>'; echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">'; echo '</head>';
Code:
@charset "utf-8";
Code:
order deny,allow deny from all AddCharset utf-8 .css .htm .html .js php_value default_charset utf-8
Code:
if (mysqli_connect_errno()) { die('Verbindungsaufbau Fehlgeschlagen: ' . mysqli_connect_error() . '(' . mysqli_connect_errno() . ')'); } mysql_query("SET NAMES 'utf8'");
Code:
<form action="'.$form_action.'" method="post" accept-charset="utf-8">
7) BOMs habe ich schon alle ausgeflöht, weil die PDF-Generierung sonst gar nicht funktionieren würde.
Was mache ich falsch? Habe ich diese Sachen alle an die falsche Stelle programmiert, so dass sie irgendwie nicht berücksichtigt werden?
Manche Skripte rufe ich mit sowas auf wie
Code:
header('Location: /adresseingabe.php?meldung=iok');
PHPMyAdmin sagt, dass meine Datenbank als Ganzes die Kollation utf8_unicode_ci hat, muss ich das vielleicht auch noch auf utf8_gneral_ci ändern? Und wenn ja, wie?
Ich würde mich sehr über Lösungsvorschläge von Euch freuen.
Vielen Dank
Kommentar