PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Sonderzeichen nicht richtig dargestellt - schon alles probiert! (https://www.php-resource.de/forum/php-developer-forum/103355-sonderzeichen-nicht-richtig-dargestellt-schon-alles-probiert.html)

ich_programmier 14-09-2012 15:22

Sonderzeichen nicht richtig dargestellt - schon alles probiert!
 
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:

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>';

2) Meine CSS beginnt mit
Code:

@charset "utf-8";
3) Meine .htaccess-Datei, die in meinem Hauptverzeichnis liegt, also demVerzeichnis, wo auch meine index.php ist, sieht wie folgt aus:

Code:

order deny,allow
deny from all
AddCharset utf-8 .css .htm .html .js
php_value default_charset utf-8

4) Nach dem Verbindungsaufbau mit der Datenbank lege ich utf8 als Zeichensatz fest:

Code:

if (mysqli_connect_errno()) {
die('Verbindungsaufbau Fehlgeschlagen: ' . mysqli_connect_error() . '(' . mysqli_connect_errno() . ')');
}
mysql_query("SET NAMES 'utf8'");

5) Alle meine HTML-Formulare beginnen mit:

Code:

<form action="'.$form_action.'" method="post" accept-charset="utf-8">
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

Code:

header('Location: /adresseingabe.php?meldung=iok');
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

eagle275 14-09-2012 15:39

berichtige erstmal deine Fehler ...

mysqli_connect_errno() <-> mysql_query ???

schicke anstelle von set names bitte eine Abfrage mit

Code:

SET CHARACTER SET 'utf8'

Kropff 14-09-2012 16:24

Außerdem gibt es hier ein Tutorial zu dem Thema.

Peter

AmicaNoctis 15-09-2012 09:55

Zitat:

Zitat von eagle275 (Beitrag 663096)
Code:

SET CHARACTER SET 'utf8'

Bitte die Anführungszeichen beachten! Es heißt
Code:

SET CHARACTER SET utf8;
aber
Code:

SET NAMES 'utf8';
Gruß,

Amica

h3ll 15-09-2012 10:04

Oder man verwendet einfach:

PHP: mysqli::set_charset - Manual

ich_programmier 20-09-2012 12:51

Danke schon mal!
 
Hallo,

vielen Dank für Eure Ratschläge, und Entschuldigung, dass ich jetzt erst reagiere.

Da ich seit letzten Freitag mit der Erkältung im Bett liege und meine Web-Anwendung von zu Hause aus nicht aufrufen kann, kann ich die Vorschläge erst nächste Woche ausprobieren.

Ich gebe dann sofort Rückmeldung.

Nochmals vielen Dank


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:46 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG