SciTE und UTF-8

Update: Wie man UTF-8 als Standard-Kodierung für SciTE einstellt, wird in diesem Artikel beschrieben: UTF-8 als Standard-Zeichenkodierung unter SciTE

Alle lieben UTF-8, weil man damit halt einfach alles machen kann.
Ich mag es also auch. Also will ich auch, dass mein Lieblingseditor, ScITE, immer mit UTF-8 arbeitet.

Die einzige Möglichkeit, die ich gefunden habe ist die, dass ich das Encoding immer im Menü File – Encoding umstelle. Einen entsprechenden Befehl für die (ansonsten extrem umfangreiche) Konfiguration konnte ich nicht finden.

Bei der Einstellung „UTF-8″ wird die Datei als UTF-8 codiert abgespeichert (bestehender Text wird *nicht* konvertiert!). Leider verursacht diese Einstellung Probleme mit PHP, da eine BOM geschrieben wird. Diese wird von PHP nicht (wie eigentlich erwartet) ignoriert sondern gleich am Anfang als Output erkannt. Dadurch wird das Senden der Header ausgelöst, was es unmöglich macht, eigene Header mit der Funktion header() zu setzen.

ScITEs UTF-8 Optionen
UTF-8 Optionen in ScITE

Unter der Einstellung „UTF-8″ gibt es noch die Option „UTF-8 Cookie“. Hier wird auf eine BOM verzichtet. Allerdings muss man innerhalb der ersten beiden Zeilen ein „Coding Cookie“ notieren:

<?php // coding: utf-8
header('Content-Type: text/plain');
echo 'foobar';
?>

Das ist zwar nicht ganz so komfortabel wie eine BOM, aber immerhin ist es UTF-8 und das will ich ja.
Für PHP 6, das Unicodeunterstützung haben sollte gibt es noch kein geplantes Veröffentlichungsdatum – eine Wunschliste existiert aber schon.

6 Kommentare to “SciTE und UTF-8”

  1.  Mike schrieb am 06. Jul 2006 um 3:07 zitieren

    Das hab ich jetzt nich ganz verstanden.
    Sollte ich richtig verstehen, dass Scite mit dem gesetzten UTF-bit bytewhatever nich klarkommt, so empfehle ich:
    Quanta+ für Linux
    Pspad für Win
    Jedit für Mac
    (Die Reihenfolge der Programme ist meine favorisierte, leider nich die der Betriebbsysteme, gäbs Quanta+ überall, würde ich es wahrscheinlich auch nutzen.)
    Oder was qualifiziert Scite gegenüber pspad? „Php-designer“ schon mal probiert? Ich nicht direkt, aber was ich da gesehen hab, sah gut aus…

  2.  Greg schrieb am 06. Jul 2006 um 11:58 zitieren

    Mit UTF-8 habe ich auch so meine Probleme. Mein eigentlicher Lieblingseditor (Proton) kann das gar nicht. Bei Notepad++ kann man das zwar sogar voreinstellen, richtig zufrieden bin ich damit aber auch nicht.

  3.  stephantom schrieb am 07. Jul 2006 um 0:14 zitieren

    SciTE kommt mit der BOM schon klar und schreibt sie auch korrekt.
    Die Probleme sind:
    a) SciTE kann nicht so eingestellt werden, dass für alle neuen Dateien automatisch UTF-8 verwendet wird.
    b) PHP die BOM, die ja immer am Anfang der Datei kommt [3 Bytes], nicht ignoriert sondern als Output behandelt. Dadurch wird das Senden von benutzerdefinierten HTTP-Headern (z.B. ‚Location‘ zur Weiterleitung) unmöglich gemacht. Der entsprechende Bug ist im Beitrag verlinkt und als „won‘t fix“ markiert mit einem Kommentar, dass diese Problematik erst in PHP6 behandelt werden wird.

  4.  Blacker47 schrieb am 21. Aug 2006 um 16:36 zitieren

    Bei PsPad (Windows) kann man das Fest abstellen. Mit etwas größerem aufwand kriegt man auch Einrückungen als Tabs hin. Auch automatische UTF-8 und UNIX Format kann voreingestellt werden.

  5.  Dennis schrieb am 18. Jun 2008 um 11:42 zitieren

    Schau mal hier:

    http://blog.valtersboze.com/20.....-to-utf-8/

  6. [...] viele danach suchen und dann auf diesen alten Artikel stoßen, gibt es hier jetzt eine kleine Erklärung, wie man UTF-8 als Standard-Zeichensatzkodierung [...]

Trackback-Adresse | RSS-Feed für die Kommentare abonnieren

Hinterlasse einen Kommentar:


(Wir behalten uns vor Kommentare von dummen Menschen entweder zu löschen oder exemplarisch für die Nachwelt zu konservieren. Dumme Kommentare mit Werbelinks müssen leider auf zweiteres Privileg verzichten.)

XHTML: Du kannst diese Tags verwenden:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>