# Encodings

Zeichenkodierungen und Escape-Funktionen.

# Encodings – Übersicht

<!-- last_modified: 06. Feb 2017 -->
Bestimmte Tags unterstützen Encodings (Maskierungen) um die Ausgabe in bestimmten Situationen anders aussehen zu lassen. So werden z.B. für HTML spitze Klammern durch ihre entsprechenden HTML-Entites ersetzt oder für JavaScript Steuerzeichen escaped (ein Backslash vorangestellt).

Die meisten Tags unterstützen auch eine Angabe der gewünschten Kodierung via `encoding` Parameter, z.B.: &lt;bx:recordfield.Name encode="..." /&gt;
Falls explizit kein Encoding angegeben wurde, versucht das Tag automatisch passen zu encoden (z.B. HtmlEncode bei Mime-Type text/html). Die folgenden Umwandlungen können angegeben werden:

- javascript
- url
- xml
- html
- sql
- sql-like
- sql-rlike
- htmltext
- plain

Informationen zu den einzelnen Encodings:

- [HtmlEncode](/books/cms-handbuch-entwickler/page/htmlencode)
- [HtmlMask](/books/cms-handbuch-entwickler/page/htmlmask)
- [ScriptEncode](/books/cms-handbuch-entwickler/page/scriptencode)
- [UrlEncode](/books/cms-handbuch-entwickler/page/urlencode)
- [XmlEncode](/books/cms-handbuch-entwickler/page/xmlencode)

Auf jeder Seite steht ganz unten, welche Tags oder sonstigen Funktionen diese Umwandlung benutzen bzw. unterstützen.

# HtmlEncode

<!-- last_modified: 26. Jan 2014 -->
Es werden folgende Ersetzungen vorgenommen:

| Originalwert | ausgegebener Wert |
|---|---|
| `<` | `&lt;` |
| `>` | `&gt;` |
| `"` | `&quot;` |
| `'` | `&#039;` |
| `&` | `&amp;` |

# HtmlMask

<!-- last_modified: 05. Mar 2014 -->
Hierbei werden sämtliche Zeichen durch HTML-Entities der Form `&#dd;` ersetzt, wobei `d` für eine dezimale Ziffer steht.

Aus `Hallo` wird somit `&#72;&#97;&#108;&#108;&#111;`.

# ScriptEncode

<!-- last_modified: 26. Jan 2014 -->
Einige Sonderzeichen und besondere Zeichen werden durch JavaScript Escape-Sequenzen ersetzt.

Den folgenden Zeichen wird ein \ (Backslash) vorangestellt:

- Newline / Zeilenumbruch (`\n` / 0x0a)
- Carriage return / Wagenrücklauf (`\r` / 0x0d)
- Tab (`\t` / 0x09)
- Single-Quote / Apostroph (`'` / 0x27)
- Double-Quote / Anführungszeichen (`"` / 0x22)
- Backslash (`\` / 0x5c)

## Strict / Non-Strict

Standardmäßig ist der Strict-Modus aktiviert, das heißt jeder Backslash wird verdoppelt.

Im Non-Strict-Modus werden Backslashes, die sich vor den oben aufgelisteten Zeichen (außer Single-Quote) befinden nicht verdoppelt (außer der Backslash steht ganz am Ende).

# UrlEncode

<!-- last_modified: 26. Jan 2014 -->
Es wird die Java Klasse <a href="http://docs.oracle.com/javase/7/docs/api/java/net/URLEncoder.html" target="_blank">URLEncoder</a> benutzt. Dabei werden "unsichere" Zeichen durch ein oder mehrere Blöcke `%hh` ersetzt, wobei `h` für eine hexadezimale Ziffer steht.

Je nach verwendetem Zeichensatz können die Hexadezimalen Blöcke anders aussehen, so wird ein kleines `ö` z.B. mit ISO-8859-1 zu `%f6`, mit UTF-8 allerdings wird es zu `%c3%b6`.

Es gelten folgende Regeln:

- Die Bereiche a-z, A-Z und 0-9 werden nicht ersetzt
- . (Punkt), - (Minus), * (Stern) und _ (Underscore) werden nicht ersetzt
- Leerzeichen wird durch + (Plus) ersetzt
- Alle anderen Zeichen sind "unsichere" Zeichen und werden in Hexadezimal dargestellt

# XmlEncode

<!-- last_modified: 26. Jan 2014 -->
Es werden folgende Ersetzungen vorgenommen:

| Originalwert | ausgegebener Wert |
|---|---|
| `<` | `&lt;` |
| `>` | `&gt;` |
| `"` | `&quot;` |
| `&` | `&amp;` |
| Zeichen zwischen dezimal 32 und 127<br>(beides inklusive) | *(unverändert)* |
| Alle restlichen Zeichen | `&#ddd;`<br>d = dezimale Ziffer<br><br>je nach Plattform, auf der das CMS läuft,<br>können unterschiedliche Werte entstehen |