security issues. Thompson's design was outlined on September 2, 1992, on a placemat in a New Jersey diner with Rob Pike. In the following days, Pike and Thompson implemented it and updated Plan 9 to use it throughout, and then communicated their success back to X/Open, which accepted it as the specification for FSS-UTF. UTF-8 was first officially presented at the USENIX conference in San Diego, from January 25 to 29, 1993. The Internet Engineering Task Force adopted UTF-8 in its Policy on Character Sets and Languages in RFC 2277 (BCP 18) for future internet standards work, replacing Single Byte Character Sets such as Latin-1 in older RFCs. In November 2003, UTF-8 was restricted by to match the constraints of the UTF-16 character encoding: explicitly prohibiting code points corresponding to the high and low surrogate characters removed more than 3% of the three-byte sequences, and ending at U+10FFFF removed more than 48% of the four-byte sequences and all five- and six-byte sequences. Standards There are several current definitions of UTF-8 in various standards documents: / STD 63 (2003), which establishes UTF-8 as a standard internet protocol element defines UTF-8 NFC for Network Interchange (2008) ISO/IEC 10646:2014 §9.1 (2014) The Unicode Standard, Version 14.0.0 (2021) They supersede the definitions given in the following obsolete works: The Unicode Standard, Version 2.0, Appendix A (1996) ISO/IEC 10646-1:1993 Amendment 2 / Annex R (1996) (1996) (1998) The Unicode Standard, Version 3.0, §2.3 (2000) plus Corrigendum #1 : UTF-8 Shortest Form (2000) Unicode Standard Annex #27: Unicode 3.1 (2001) The Unicode Standard, Version 5.0 (2006) The Unicode Standard, Version 6.0 (2010) They are all the same in their general mechanics, with the main differences being on issues such as allowed range of code point values and safe handling of invalid input. Comparison with other encodings Some of the important features of this encoding are as follows: Backward compatibility: Backward compatibility with ASCII and the enormous amount of software designed to process ASCII-encoded text was the main driving force behind the design of UTF-8. In UTF-8, single bytes with values in the range of 0 to 127 map directly to Unicode code points in the ASCII range. Single bytes in this range represent characters, as they do in ASCII. Moreover, 7-bit bytes (bytes where the most significant bit is 0) never appear in a multi-byte sequence, and no valid multi-byte sequence decodes to an ASCII code-point.