UTF-8 durchgehend anwenden
G. Seifried
- programmiertechnik
Hi,
ich möchte ungern redundante Angaben machen.
Ich verwende PHP aber keine Datenbanken.
1. Sind folgende Einstellungen wirklich alle nötig oder gibt es gar noch weitere?
Webserver: AddDefaultCharset UTF-8
HTML: <meta http-equiv="content-type" content="text/html; charset=UTF-8">
PHP-INI: default_charset = "utf-8"
PHP-Programm: header("Content-Type: text/html; charset=UTF-8");
Formular: <form accept-charset="UTF-8" action=.....>
Mailerstellung: mb_internal_encoding("UTF-8");
2. Bei mail-Erstellung gibt es noch mb_language("de"); Ist dies nötig bei der Angabe von
<html lang="de">
Gruß Seifried
.. und noch ewas:
Zeichenkonvertierung: htmlspecialchars ( $string ,....,'UTF-8');
Tach!
- Sind folgende Einstellungen wirklich alle nötig oder gibt es gar noch weitere?
Webserver: AddDefaultCharset UTF-8
Das gilt für alle HTML- und Plaintext-Dokumente (text/html, text/plain), die der Apache ausliefert, also auch für PHP-Dokumente mit diesen Content-Types.
HTML: <meta http-equiv="content-type" content="text/html; charset=UTF-8">
Das braucht man, wenn kein HTTP-Header zur Verfügung steht, also beim Lokalspeichern zum Beispiel.
PHP-INI: default_charset = "utf-8"
PHP sendet diesen Content-Type zum Webserver.
PHP-Programm: header("Content-Type: text/html; charset=UTF-8");
Redundant, wenn AddDefaultCharset oder default_charset gesetzt ist.
Formular: <form accept-charset="UTF-8" action=.....>
Im Allgemeinen unnötig. Die Browser nehmen die Seitenkodierung.
Mailerstellung: mb_internal_encoding("UTF-8");
Mit Mail hat das nichts zu tun. Das ist für die Default-Einstellung für die MultiByte-String-Funktionen.
Zeichenkonvertierung: htmlspecialchars ( $string ,....,'UTF-8');
Unnötig. Die von htmlspecialchars() behandelten Zeichen haben (hierzulande) eindeutige Bytewerte. Die Funktion arbeitet mit beiden Angaben (UTF-8, ISO-8859-1/Win1252) korrekt.
- Bei mail-Erstellung gibt es noch mb_language("de"); Ist dies nötig bei der Angabe von
<html lang="de">
Für Mails im HTML-Format scheint mir eine Sprachangabe verzichtbar. Oder versendest du Mails, bei denen der Client wissen muss, welche Sprache das ist, um zum Beispiel eine automatische Übersetzung anzubieten? Warum verschickst du denn dann Mails in einer für den Empfänger ungünstigen Sprache?
dedlfix.
@@G. Seifried:
nuqneH
HTML: <meta http-equiv="content-type" content="text/html; charset=UTF-8">
Sollte in HTML5 <meta charset="UTF-8">
sein. [qa-html-encoding-declarations]
Qapla'