Sie befinden sich hier: start » de » utf8

UTF-8

Seit Version 1.2 ist CMSimple_XH UTF-8 kodiert (seit CMSimple_XH 1.5 darf diese Einstellung nicht mehr geändert werden). Wenn Sie nicht von einer älteren Version upgraden, keine der Dateien offline mit einem Editor bearbeiten und keine ANSI kodierten Templates oder Plugins verwenden wollen, können Sie den Rest dieses Artikels überspringen.

Warum UTF-8?

UTF-8 hat sich quasi zum Standard für das Internet entwickelt. Daher wurde beschlossen die Kodierung von CMSimple_XH auf UTF-8 zu ändern, um bestmögliche Interoperabilität mit dem WWW zu gewährleisten.

Weiterhin sollte dieser Schritt bzgl. der Kodierung der Systemkern- und Plugin-Dateien besonders in mehrsprachigen Installationen helfen. Natürlich ist es möglich alle sprachspezifischen Dateien in der Standard-Kodierung dieser Sprache zu kodieren. Aber leider gibt es keine allgemeinen Standards in dieser Hinsicht. Z.B. werden die so genannten westliche Sprachen oft als ISO-8859-1 kodiert. Aber dieser Zeichensatz enthält nicht das „€“-Zeichen, so dass ISO-8859-15 eingeführt wurde. Aber unter Windows ist CP-1252 die übliche Kodierung. Diese drei Kodierungen sind sehr ähnlich, aber sie sind nicht identisch. Bei kyrillischen Sprachen ist die Situation noch schlimmer: ISO-8859-5, KOI-R, KOI-U und CP-1251 „stehen in Konkurrenz“.

Und bedenken Sie die Probleme bzgl. Dateien die gemeinsam für unterschiedliche Sprachen verwendet werden: diese dürften überhaupt keine nicht ASCII-Zeichen enthalten. Das ist kein großes Problem für eigentlich Programmdateien (PHP und JS), aber sehr wohl für Daten von Plugins, die für alle Sprachen gemeinsam genutzt werden.

Daher erscheint es als langfristig beste Lösung für jeden, auf UTF-8 umzustellen.

Was ist ein BOM?

Der folgende Abschnitt ist recht technisch. Als CMSimple_XH Anwender muss man nicht alle Details verstehen. Die einzige Regel die Sie beachten sollten:

Kodieren Sie niemals eine PHP-Datei, die von CMSimple_XH verwendet wird, als UTF-8 mit BOM.

BOM ist die Abkürzung von byte order mark (engl. Byte-Reihenfolge-Kennzeichnung). Das ist ein wichtiges Konzept für die Plattform-Interoperabilität von vielen multibyte encodings, z.B. UTF-16 und UTF-32. Es ist nötig, weil verschiedene Betriebssystem diese Kodierungen in unterschiedlichers Byte-Reihenfolge erwarten (big-endian/little-endian).

Aber für UTF-8 ist die Reihenfolge der Bytes für alle Plattformen gleich, so dass das BOM hier seine ursprüngliche Bedeutung verloren hat. Es wird allerdings von vielen Editoren verwendet, um eine Datei als UTF-8 zu kennzeichnen. Das ist vermutlich nicht die beste Idee, und der Unicode-Standard empfiehlt nicht, ein BOM in UTF-8 kodierten Dateien zu verwenden. Oftmals stört das BOM allerdings nicht, aber in PHP-Dateien und Dateien die von PHP inkludiert werden, verursacht das BOM ein Problem: das BOM wird sofort zum Browser geschickt, wenn die Datei verarbeitet wird. Da so die HTTP Antwort bereits begonnen wurde, wird das spätere Setzen von HTTP Headern unterdrückt, was unterschiedliche Fehlfunktionen des Skripts nach sich ziehen kann.

Dateien offline bearbeiten

Wenn Sie irgendeine PHP-Datei offline bearbeiten wollen, ist es erforderlich diese als UTF-8 ohne BOM zu speichern. Manche Editoren fügen das BOM automatisch ein, wenn die Zeichenkodierung UTF-8 ist (z.B. der Windows Editor); verwenden Sie daher einen Editor, der fähig ist Dateien als UTF-8 ohne BOM zu speichern (z.B. Notepad++) und stellen Sie sicher, das das auch geschieht. Andernfalls können Fehlfunktionen von CMSimple_XH auftreten; seit CMSimple_XH 1.5.4 wird dann die folgende Fehlermeldung angezeigt:

Cannot modify header information - headers already sent (output started at path/to/file.php:1)

Upgrade von ANSI kodierten Versionen

Seit CMSimple_XH 1.2 sind alle Versionen UTF-8 kodiert. Wenn Sie also von einer älteren Version upgraden wollen, müssen Sie alle Dateien die nicht ASCII-Zeichen enthalten, nach UTF-8 ohne BOM konvertieren. Sie können dies von Hand machen, ein Tool verwenden, dass es ermöglicht ein komplettes Projekt zu konvertieren, oder Sie können das Utf8migrator_XH Plugin verwenden (bitte beachten Sie, das es sich noch im BETA Stadium befindet).

Wenn Sonderzeichen in den Seitenüberschriften vorkommen, dann werden sich die URLs nach der Umstellung vermutlich geändert haben. Um diese weiterhin funktionieren zu lassen und um Robots über die Änderung zu informieren, können Sie die folgende index.php verwenden (im Installationsverzeichnis von CMSimple_XH und in allen Ordnern für Zweitsprachen):

<?php
 
$qs = str_replace(array('%E4',    '%F6',    '%FC',    '%C4',    '%D6',    '%DC',    '%DF'),
                  array('%C3%A4', '%C3%B6', '%C3%BC', '%C3%84', '%C3%96', '%C3%9C', '%C3%9F'),
                  $_SERVER['QUERY_STRING']);
 
if ($qs != $_SERVER['QUERY_STRING']) {
    $loc = 'http'
        . (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 's' : '')
        . '://' . $_SERVER['SERVER_NAME']
        . ($_SERVER['SERVER_PORT'] < 1024 ? '' : ':' . $_SERVER['SERVER_PORT'])
        . preg_replace('/index.php$/', '', $_SERVER['SCRIPT_NAME']) . '?' . $qs;
    header("Location: $loc", true, 301);
    exit;
} else {
    unset($qs);
}
 
include('./cmsimple/cms.php');
 
?>

Sie müssen die ersten beiden Zeilen entsprechend den verwendeten Zeichen anpassen. Für index.php Dateien der Zweitsprachen muss die letzte Zeile geändert werden:

include('../cmsimple/cms.php');

ANSI kodierte Templates und Plugins verwenden

Die Weiterverwendung von ANSI kodierten Templates in UTF-8 kodierten CMSimple_XH Installationen sollte kein Problem darstellen. Ändern Sie einfach die Kodierung von template.htm und stylesheet.css (und ggf. weiteren Dateien im Template-Ordner) zu UTF-8 ohne BOM.

Die Weiterverwendung ANSI kodierter Plugins kann möglich sein, wenn Sie die Dateien (besonders die Sprach- und Daten-Dateien) zu UTF-8 ohne BOM konvertieren. Aber es können andere Probleme auftreten, die nicht so leicht zu lösen sind, so dass es das beste ist, beim Autor des Plugins nach einer UTF-8 konformen Version anzufragen, oder ein alternatives Plugin zu verwenden, das bereits UTF-8 kodiert ist. Wenn das nicht möglich ist, müssen Sie selbst ausprobieren, ob die Konvertierung der Dateien nach UTF-8 ohne BOM ausreicht.

 
Sie befinden sich hier: start » de » utf8
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: GNU Free Documentation License 1.3
Valid XHTML 1.0 Valid CSS Driven by DokuWiki