Mojibake Decoder

Yes: Replace HTML entities (e.g. &) with their values.
No: Do not replace HTML entities.
Auto: Replace HTML entities in text that doesn’t contain a literal < indicating that the input is actual HTML.
Remove “ANSI” terminal control sequences, like codes to change the text color.
Attempt to repair mistakes caused by misinterpreting Unicode data, by decoding the text in a different encoding standard.
Allow a literal space (U+20) to be interpreted as a non-breaking space (U+A0) when that would make it part of a fixable mojibake string.
Detect mojibake that has been partially replaced by the characters ‘�’ or ‘?’. If the mojibake could be decoded otherwise, replace the detected sequence with ‘�’.
When we see sequences that distinctly look like UTF-8 mojibake, but there’s no consistent way to reinterpret the string in a new encoding, replace the mojibake with the appropriate UTF-8 characters anyway. This helps to decode strings that are concatenated from different encodings.
Replace C1 control characters (the useless characters U+80 - U+9B that come from Latin-1) with their Windows-1252 equivalents, like HTML5 does, even if the whole string doesn’t decode as Latin-1.
Separate ligatures (such as fi) into individual letters.
Replace fullwidth Latin characters and halfwidth Katakana with their more standard widths.
Replace various forms of ‘curly’ “quotes” with plain ASCII 'straight' "quotes".
Replace sequences of UTF-16 surrogate codepoints with the character they were meant to encode. This fixes text that was decoded with the obsolete UCS-2 standard, and allows it to support high-numbered codepoints such as emoji.
Remove certain control characters that have no displayed effect on text. This includes most of the ASCII control characters, plus some Unicode controls such as the byte order mark (U+FEFF). Useful control characters, such as Tab, Line Feed, and bidirectional marks, are left as they are. See the ftfy docs for the full list.
Which Unicode normal form to use for normalizing the string.