## Strings

### String types & Unicode

The &ECL; implementation of strings is ANSI Common-Lisp compliant. There are basically four string types as shown in table.ansi.strings. As explained in ansi.characters, when Unicode support is disabled, `character` and `base-character` are the same type and the last two string types are equivalent to the first two.

### &CommonLisp; string types

Abbreviation | Expanded type | Remarks
`string` | `(array character (*))` | 8 or 32 bits per character, adjustable.
`simple-string` | `(simple-array character (*))` | 8 or 32 bits per character, not adjustable nor displaced.
`base-string` | `(array base-char (*))` | 8 bits per character, adjustable.
`simple-base-string` | `(simple-array base-char (*))` | 8 bits per character, not adjustable nor displaced.

It is important to remember that strings with unicode characters can only be printed readably when the external format supports those characters. If this is not the case, &ECL; will signal a `serious-condition`. This condition will abort your program if not properly handled.