Specials (Unicode block)

**Specials** is a short Unicode block of characters put at the very end of the Basic Multilingual Plane, at U+FFF0&ndash;FFFF. Of these 16 code points, five have been used since Unicode 3.0:
*, marks start of annotated text
*, marks start of annotating character(s)
*, marks end of annotation block
*, placeholder in the text for another unspecified object, for example in a compound document.
* used to replace an unknown, unrecognized, or unrepresentable character
* not a character.
* not a character.

FFFE and FFFF are not unused in the usual way, but guaranteed not to be Unicode characters at all. They can be used to guess a text's scheme, since any text using these is not a correctly encoded Unicode text. Unicode's  character can be put at the start of a Unicode text to signal its endianness: a program reading such a text and finding 0xFFFE would then know that it should switch the byte order for all the following characters.

Its block name in Unicode 1.0 was **Special**.

## Replacement character
The **replacement character** (�) (often displayed as a black rhombus with a white question mark) is a symbol found in the Unicode standard at code point U+FFFD in the *Specials* table. It is used for problems when something is unable to render a stream of data to a correct symbol. It is usually seen when the data is not valid and does not match any character:

Consider a text file containing the German word  (meaning 'for') in the ISO-8859-1 encoding (`0x66 0xFC 0x72`). This file is now opened with a text editor that thinks that the input is UTF-8. The first and last byte are valid UTF-8 encodings of ASCII, but the middle byte (`0xFC`) is not a valid byte in UTF-8. So, a text editor could replace this byte with the replacement character symbol to make a valid string of Unicode code points. The whole string now looks like this: "f�r".

A poorly made text editor might save the replacement character in UTF-8, and the text file data will then look like this: `0x66 0xEF 0xBF 0xBD 0x72`, which will be displayed in ISO-8859-1 as "fï¿½r" (this is called mojibake). Since the replacement is the same for all errors this makes it impossible to get the first character. A better (but harder to make) way is to keep the original bytes, including the error, and only convert to the replacement when *displaying* the text. This will allow the text editor to save the original byte sequence, while still showing the error to the user.

At one time the replacement character was used a lot when there was no glyph that can be used in a font for that character. However, most new text rendering systems instead use a font's  character, which most times is an empty box (or "?" or "X" in a box), sometimes called a "tofu" (this browser displays 􏿾). There is no Unicode point for this symbol.

So, the replacement character is now only seen for encoding errors, such as invalid UTF-8. Some software tries to hide this by translating the bytes of invalid UTF-8 to matching characters in Windows-1252 (since that is the most likely source of these errors), so that the replacement character is never seen.

## Unicode chart
## History
The following Unicode-related documents record the purpose and process of defining specific characters in the Specials block:

## Related pages
* Unicode control characters

## References