FrontPage unterstützt UTF-8 seit Version 97 und damit länger als die meisten anderen HTML-Editoren. Dieses Dokument beschreibt, wie die FrontPage-Versionen 2000, 2002 und 2003 UTF-8-codierte Dokumente erkennen und verarbeiten.
Lesen Sie Zeichencodierungen in Expression Web, wenn Sie den FrontPage-Nachfolger verwenden.
Ja, kein Problem. UTF-8 wird entgegen der Meinung vieler Webdesigner von fast allen Browsern hervorragend unterstützt, selbst Netscape 3.x kann man es per Eingriff in die
Registry leicht
beibringen. UTF-8 wird insbesondere von älteren Browsern sogar
besser unterstützt als numerische Zeichen- oder
Entity-Referenzen wie
€
oder
€
. Alan J. Flavell
schreibt treffend:
The expected difficulties are not in the browsers, but in authors (mis)handling this unfamiliar data format.
Und FrontPage hilft gerade denen.
FrontPage 2000 erkennt UTF-8-codierte Dokumente
ausschließlich anhand von
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
.
FrontPage 2000 unterstützt das
UTF-8-BOM nicht. Ist ein BOM vorhanden, wird ein Dokument stets als Windows-1252 decodiert, selbst wenn ein
meta
-Element UTF-8 deklariert. Das BOM wird in den Rumpf der Seite verschoben und dort als

angezeigt. Beim Speichern verwendet FrontPage hingegen wieder UTF-8 und schreibt damit das Zeichen
U+FEFF
UTF-8-codiert in die Datei, aber eben nicht an den Anfang, wodurch das BOM zerstört wird.
Die XML-Deklaration
<?xml version="1.0" encoding="utf-8"?>
hat ebenfalls nicht den gewünschten Effekt. Sie wird nicht als Codierungsdeklaration herangezogen, zudem wandert sie wie das BOM in den Rumpf der Seite und damit unbrauchbar.
Wenn Sie also UTF-8 in FrontPage 2000 verwenden wollen, dürfen Sie das von FrontPage erzeugte
meta
-Element nicht entfernen. Verwenden Sie weder BOM noch XML-Deklaration.
Jedes Dokument, das
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
enthält oder mit einem UTF-8-BOM beginnt, wird von FrontPage 2002 als UTF-8 verarbeitet. Das gilt auch, wenn es Byte-Sequenzen enthält, die in UTF-8 ungültig sind. Solche fehlerhaft codierte Zeichen erscheinen als
?
im Quelltext.
Ohne
meta
-Element oder BOM schaltet FrontPage stets auf Windows-1252. (Sie können dies anhand der Schriftart in der HTML-Ansicht erkennen; bei Windows-1252 wird eine Festbreitenschriftart verwendet, bei Unicode-Codierungen eine serifenlose Schriftart.)
Wenn das Dokument allerdings mit einer XML-Deklaration
<?xml version="1.0" encoding="utf-8"?>
beginnt, so wird das Dokument wiederum als UTF-8 decodiert. Zeichen, die nicht im Windows-1252-Zeichensatz enthalten sind, können dann nicht in der HTML-Ansicht dargestellt werden. FrontPage codiert solche Zeichen deshalb um:
Zeichen, die nicht in Windows-1252 codierbar sind, werden als als numerische Zeichenreferenz geschrieben.
<?xml version="1.0" encoding="utf-8"?>
<html>
<head>
<title></title>
</head>
<body>
<h1>α</h1>
</body>
</html>
mit UTF-8-codiertem „α“ wird deshalb als
<?xml version="1.0" encoding="utf-8"?>
<html>
<head>
<title></title>
</head>
<body>
<h1>α</h1>
</body>
</html>
im Editor angezeigt.
Zeichen aus Windows-1252 werden „roh“ codiert.
<?xml version="1.0" encoding="utf-8"?>
<html>
<head>
<title></title>
</head>
<body>
<h1>ä</h1>
</body>
</html>
mit UTF-8-codiertem „ä“ wird korrekt nach Windows-1252 umcodiert, aber mit unveränderter XML-Deklaration abespeichert als
<?xml version="1.0" encoding="utf-8"?>
<html>
<head>
<title></title>
</head>
<body>
<h1>ä</h1>
</body>
</html>
mit Windows-1252-codiertem „ä“. Danach kann das Dokument deshalb nicht mehr korrekt geladen werden, denn aufgrund der XML-Deklaration geht FrontPage weiterhin von UTF-8 aus:
<?xml version="1.0" encoding="utf-8"?>
<html>
<head>
<title></title>
</head>
<body>
<p>?/p>
</body>
</html>
Sie sollten die XML-Deklaration
<?xml version="1.0" encoding="utf-8"?>
deshalb in FrontPage nicht verwenden.
<?xml version="1.0" encoding="iso-8859-1"?>
ist aber völlig unproblematisch, wenn Sie denn tatsächlich ISO-8859-1 benutzen.
Ohne XML-Deklaration, BOM und entsprechendes
meta
-Element werden mögliche UTF-8-Sequenzen nicht als UTF-8, sondern als Windows-1252 interpretiert. FrontPage verhält sich hier glücklicherweise anders als Notepad.
FrontPage 2002 selbst erzeugt niemals ein BOM, ein vorhandenes BOM bleibt aber beim Speichern erhalten. Änderungen in der HTML-Ansicht löschen das BOM jedoch. Darunter fallen auch folgende Vorgänge:
ActiveDocument.DocumentHTML = ActiveDocument.DocumentHTML
o.ä. in VBA
Wenn Sie UTF-8 verwenden wollen, sollten Sie das von FrontPage erzeugte
meta
-Element nicht löschen. FrontPage erkennt UTF-8-codierte Dokumente zwar auch anhand von BOM und XML-Deklaration, diese Methoden sind aber höchst unzuverlässig.
FrontPage 2003 behandelt UTF-8 grundsätzlich wie FrontPage 2002. Allerdings bleibt ein vorhandenes BOM erhalten, auch bei Änderungen in der HTML-Ansicht. Deshalb können Sie in FrontPage 2003 das BOM als zuverlässige Codierungsdeklaration verwenden und auf das entsprechende
meta
-Element verzichten, nachdem Sie manuell ein BOM erzeugt haben.
Ich verwende dafür folgende VBA-Prozeduren:
Option Explicit
Public Const UTF8_BOM = ""
Public Const UTF16BE_BOM = "þÿ"
Public Const UTF16LE_BOM = "ÿþ"
Const F As String = "C:\foo.txt"
Sub Has_Bom()
Dim fso As New FileSystemObject
Dim t As String
t = fso.OpenTextFile(F, ForReading).ReadAll
If Left(t, 3) = UTF8_BOM Then
MsgBox "UTF-8-BOM erkannt!"
ElseIf Left(t, 2) = UTF16BE_BOM Then
MsgBox "UTF-16-BOM (Big Endian) erkannt!"
ElseIf Left(t, 2) = UTF16LE_BOM Then
MsgBox "UTF-16-BOM (Little Endian) erkannt!"
Else
MsgBox "Kein BOM erkannt!"
End If
End Sub
Sub Delete_UTF8_Bom()
Dim fso As New FileSystemObject
Dim t As String
t = fso.OpenTextFile(F, ForReading).ReadAll
If Left(t, 3) = UTF8_BOM Then
fso.OpenTextFile(F, ForWriting).write (Mid(t, 4))
MsgBox "BOM gelöscht!"
Else
MsgBox "UTF-8-BOM nicht erkannt!"
End If
End Sub
Sub Add_UTF8_Bom()
Dim fso As New FileSystemObject
Dim t As String
t = fso.OpenTextFile(F, ForReading).ReadAll
If Left(t, 3) = UTF8_BOM Then
MsgBox "UTF-8-BOM bereits vorhanden!"
Else
fso.OpenTextFile(F, ForWriting).write UTF8_BOM & t
MsgBox "BOM hinzugefügt!"
End If
End Sub
Außerhalb von VBA können Sie die Skripte has-bom.vbs, add-utf8-bom.vbs und delete-utf8-bom.vbs verwenden. Die .vbs-Dateien bspw. auf den Desktop ablegen und dann beliebige Dateien per Drag and Drop untersuchen bzw. manipulieren.