In the Unicode standard, a plane is a contiguous group of 65,536 (2 ) code points . There are 17 planes, identified by the numbers 0 to 16, which corresponds with the possible values 00–10 16 of the first two positions in six position hexadecimal format (U+ hh hhhh ). Plane 0 is the Basic Multilingual Plane (BMP), which contains most commonly used characters. The higher planes 1 through 16 are called "supplementary planes". The last code point in Unicode is the last code point in plane 16, U+10FFFF. As of Unicode version 16.0, five of the planes have assigned code points (characters), and seven are named.
44-511: [REDACTED] Look up bmp in Wiktionary, the free dictionary. BMP may refer to: Computing [ edit ] Basic Multilingual Plane , related to the Unicode character set Beep Media Player, an obsolete media player related to XMMS BMP file format , an image file format with the extension .bmp BGP Monitoring Protocol (RFC 7854),
88-1122: A pair of 16- bit codes: one High Surrogate and one Low Surrogate. A single surrogate code point will never be assigned a character. 65,520 of the 65,536 code points in this plane have been allocated to a Unicode block, leaving just 16 code points in a single unallocated range (2FE0..2FEF). As of Unicode 16.0 , the BMP comprises the following 164 blocks: Plane 1 , the Supplementary Multilingual Plane ( SMP ), contains historic scripts (except CJK ideographic), and symbols and notation used within certain fields. Scripts include Linear B , Egyptian hieroglyphs , and cuneiform scripts. It also includes English reform orthographies like Shavian and Deseret , and some modern scripts like Osage , Warang Citi , Adlam , Wancho and Toto . Symbols and notations include historic and modern musical notation ; mathematical alphanumerics ; shorthands; Emoji and other pictographic sets; and game symbols for playing cards , mahjong , and dominoes . As of Unicode 16.0 ,
132-411: A code unit starts a character can be determined without examining earlier code units (i.e. the type of code unit can be determined by the ranges of values in which it falls). UTF-8 shares these advantages, but many earlier multi-byte encoding schemes (such as Shift JIS and other Asian multi-byte encodings) did not allow unambiguous searching and could only be synchronized by re-parsing from the start of
176-621: A family of growth factors influencing bone and tissue growth within animals Other uses [ edit ] Besi Merah Putih , a militia group in East Timor Best management practice for water pollution , a technical term in environmental management BMP Global Distribution Inc v Bank of Nova Scotia , a 2008–2009 case in the Supreme Court of Canada BMP Radio , a broadcasting company based in Houston, Texas Boase Massimi Pollitt ,
220-860: A former advertising agency in UK Stone Beit Midrash Program , an undergraduate Judaic Studies program at Yeshiva University Bear Mountain Parkway , a scenic parkway in New York State that connects the Bear Mountain Bridge with Peekskill Baoding East railway station , China Railway telegraph code BMP British Mandate Palestine , Geopolitical entity from 1920 to 1948 See also [ edit ] [REDACTED] Search for "bmp" on Misplaced Pages. All pages with titles containing BMP or BMPs All pages with titles beginning with BMP Topics referred to by
264-500: A hint to perform byte-swapping for the remaining values. If the BOM is missing, RFC 2781 recommends that big-endian (BE) encoding be assumed. In practice, due to Windows using little-endian (LE) order by default, many applications assume little-endian encoding. It is also reliable to detect endianness by looking for null bytes, on the assumption that characters less than U+0100 are very common. If more even bytes (starting at 0) are null, then it
308-459: A larger 31-bit space and an encoding ( UCS-4 ) that would require 4 bytes per character. This was resisted by the Unicode Consortium , both because 4 bytes per character wasted a lot of memory and disk space, and because some manufacturers were already heavily invested in 2-byte-per-character technology. The UTF-16 encoding scheme was developed as a compromise and introduced with version 2.0 of
352-560: A mix of UTF-16, UTF-8, and legacy byte encodings. While there's been some UTF-8 support for even Windows XP, it was improved (in particular the ability to name a file using UTF-8) in Windows 10 insider build 17035 and the May 2019 update. As of May 2019, Microsoft recommends software use UTF-8 , on Windows and Xbox , instead of other 8-bit encodings. It is unclear if they are recommending usage of UTF-8 over UTF-16, though they do state "UTF-16 [..]
396-431: A network protocol for monitoring BGP sessions BMP, a Billing Mediation Platform used mainly in telecom industry Vehicles [ edit ] BMP development , a series of Soviet and Russian infantry fighting vehicles BMP-1 BMP-2 BMP-3 BMP-23 , a Bulgarian infantry fighting vehicle Medical [ edit ] Basic metabolic panel , a common blood test Bone morphogenetic proteins ,
440-570: Is "constructed from a pair of Unicode scalar values" (and those values are outside the BMP and require 4 bytes each). UTF-16 in no way assists in "counting characters" or in "measuring the width of a string". UTF-16 is often claimed to be more space-efficient than UTF-8 for East Asian languages, since it uses two bytes for characters that take 3 bytes in UTF-8. Since real text contains many spaces, numbers, punctuation, markup (for e.g. web pages), and control characters, which take only one byte in UTF-8, this
484-500: Is a character encoding method capable of encoding all 1,112,064 valid code points of Unicode. The encoding is variable-length as code points are encoded with one or two 16-bit code units . UTF-16 arose from an earlier obsolete fixed-width 16-bit encoding now known as UCS-2 (for 2-byte Universal Character Set), once it became clear that more than 2 (65,536) code points were needed, including most emoji and important CJK characters such as for personal and place names. UTF-16
SECTION 10
#1732844752823528-718: Is a unique burden that Windows places on code that targets multiple platforms." The IBM i operating system designates CCSID ( code page ) 13488 for UCS-2 encoding and CCSID 1200 for UTF-16 encoding, though the system treats them both as UTF-16. UTF-16 is used by the Qualcomm BREW operating systems; the .NET environments; and the Qt cross-platform graphical widget toolkit . Symbian OS used in Nokia S60 handsets and Sony Ericsson UIQ handsets uses UCS-2. iPhone handsets use UTF-16 for Short Message Service instead of UCS-2 described in
572-484: Is big-endian. The standard also allows the byte order to be stated explicitly by specifying UTF-16BE or UTF-16LE as the encoding type. When the byte order is specified explicitly this way, a BOM is specifically not supposed to be prepended to the text, and a U+FEFF at the beginning should be handled as a ZWNBSP character. Most applications ignore a BOM in all cases despite this rule. For Internet protocols, IANA has approved "UTF-16", "UTF-16BE", and "UTF-16LE" as
616-456: Is different from Wikidata All article disambiguation pages All disambiguation pages Basic Multilingual Plane The limit of 17 planes is due to UTF-16 , which can encode 2 code points (16 planes) as pairs of words , plus the BMP as a single word. UTF-8 was designed with a much larger limit of 2 (2,147,483,648) code points (32,768 planes), and would still be able to encode 2 (2,097,152) code points (32 planes) even under
660-690: Is encoded either as one or two 16-bit code units . Code points less than 2 ("in the BMP") are encoded with a single 16-bit code unit equal to the numerical value of the code point, as in the older UCS-2. Code points greater than or equal to 2 ("above the BMP") are encoded using two 16-bit code units. These two 16-bit code units are chosen from the UTF-16 surrogate range 0xD800–0xDFFF which had not previously been assigned to characters. Values in this range are not used as characters, and UTF-16 provides no legal way to code them as individual code points. A UTF-16 stream, therefore, consists of single 16-bit codes outside
704-552: Is only true for artificially constructed dense blocks of text. A more serious claim can be made for Devanagari and Bengali , which use multi-letter words and all the letters take 3 bytes in UTF-8 and only 2 in UTF-16. In addition the Chinese Unicode encoding standard GB 18030 always produces files the same size or smaller than UTF-16 for all languages, not just for Chinese (it does this by sacrificing self-synchronization). UTF-16
748-410: Is rarely tested), has led to many bugs in software, including in Windows itself, the solution is usually adopting UTF-8 , as most software has done including (partially) Windows itself and Java and JavaScript. In the late 1980s, work began on developing a uniform encoding for a "Universal Character Set" ( UCS ) that would replace earlier language-specific encodings with one coordinated system. The goal
792-415: Is still used. JavaScript may use UCS-2 or UTF-16. As of ES2015, string methods and regular expression flags have been added to the language that permit handling strings from an encoding-agnostic perspective. UEFI uses UTF-16 to encode strings by default. Swift , Apple's preferred application language, used UTF-16 to store strings until version 5 which switched to UTF-8. Quite a few languages make
836-518: Is used by systems such as the Microsoft Windows API , the Java programming language and JavaScript /ECMAScript. It is also sometimes used for plain text and word-processing data files on Microsoft Windows. It is used by more modern implementations of SMS . UTF-16 is the only encoding (still) allowed on the web that is incompatible with 8-bit ASCII . However it has never gained popularity on
880-473: Is used for text in the OS ; API of all currently supported versions of Microsoft Windows (and including at least all since Windows CE / 2000 / XP / 2003 / Vista / 7 ) including Windows 10 . In Windows XP, no code point above U+FFFF is included in any font delivered with Windows for European languages. Older Windows NT systems (prior to Windows 2000) only support UCS-2 . Files and network data tend to be
924-453: The 3GPP TS 23.038 ( GSM ) and IS-637 ( CDMA ) standards. The Joliet file system , used in CD-ROM media, encodes file names using UCS-2BE (up to sixty-four Unicode characters per file name). Python version 2.0 officially only used UCS-2 internally, but the UTF-8 decoder to "Unicode" produced correct UTF-16. There was also the ability to compile Python so that it used UTF-32 internally, this
SECTION 20
#1732844752823968-578: The Basic Multilingual Plane ( BMP ), contains characters for almost all modern languages, and a large number of symbols . A primary objective for the BMP is to support the unification of prior character sets as well as characters for writing . Most of the assigned code points in the BMP are used to encode Chinese, Japanese, and Korean ( CJK ) characters. The High Surrogate ( U+D800–U+DBFF ) and Low Surrogate ( U+DC00–U+DFFF ) codes are reserved for encoding non-BMP characters in UTF-16 by using
1012-571: The Supplementary Special-purpose Plane ( SSP ). It comprises the following two blocks , as of Unicode 16.0 : The two planes 15 and 16 (planes F and 10 in hexadecimal) each contain a " Private Use Area ". They contain blocks named Supplementary Private Use Area-A ( PUA-A ) and -B ( PUA-B ). The Private Use Areas are available for use by parties outside ISO and Unicode (private use character encoding). UTF-16 UTF-16 ( 16-bit Unicode Transformation Format)
1056-409: The Unicode Consortium , the latter representing mostly manufacturers of computing equipment. The two groups attempted to synchronize their character assignments so that the developing encodings would be mutually compatible. The early 2-byte encoding was originally called "Unicode", but is now called "UCS-2". When it became increasingly clear that 2 characters would not suffice, IEEE introduced
1100-401: The high surrogates ( 0xD800–0xDBFF ), low surrogates ( 0xDC00–0xDFFF ), and valid BMP characters (0x0000–0xD7FF, 0xE000–0xFFFF) are disjoint , it is not possible for a surrogate to match a BMP character, or for two adjacent code units to look like a legal surrogate pair . This simplifies searches a great deal. It also means that UTF-16 is self-synchronizing on 16-bit words: whether
1144-634: The SMP comprises the following 161 blocks: Plane 2 , the Supplementary Ideographic Plane ( SIP ), is used for CJK Ideographs, mostly CJK Unified Ideographs , that were not included in earlier character encoding standards. As of Unicode 16.0 , the SIP comprises the following seven blocks: Plane 3 is the Tertiary Ideographic Plane (TIP). CJK Unified Ideographs Extension G was added to
1188-497: The TIP in Unicode 13.0, released in March 2020. It also is tentatively allocated for Oracle Bone script and Small Seal Script . As of Unicode 16.0 , the TIP comprises the following two blocks: Planes 4 to 13 (planes 4 to D in hexadecimal ): No characters have yet been assigned, or proposed for assignment, to Planes 4 through 13. Plane 14 ( E in hexadecimal) is designated as
1232-637: The Unicode standard in July 1996. It is fully specified in RFC 2781, published in 2000 by the IETF . UTF-16 is specified in the latest versions of both the international standard ISO/IEC 10646 and the Unicode Standard. "UCS-2 should now be considered obsolete. It no longer refers to an encoding form in either 10646 or the Unicode Standard." UTF-16 will never be extended to support a larger number of code points or to support
1276-479: The byte order of code units, UTF-16 allows a byte order mark (BOM), a code point with the value U+FEFF, to precede the first actual coded value. (U+FEFF is the invisible zero-width non-breaking space /ZWNBSP character). If the endian architecture of the decoder matches that of the encoder, the decoder detects the 0xFEFF value, but an opposite-endian decoder interprets the BOM as the noncharacter value U+FFFE reserved for this purpose. This incorrect result provides
1320-426: The code point are distributed among the UTF-16 bytes. Additional bits added by the UTF-16 encoding process are shown in black. UTF-16 and UCS-2 produce a sequence of 16-bit code units. Since most communication and storage protocols are defined for bytes, and each unit thus takes two 8-bit bytes, the order of the bytes may depend on the endianness (byte order) of the computer architecture. To assist in recognizing
1364-465: The code points that were replaced by surrogates, as this would violate the Unicode Stability Policy with respect to general category or surrogate code points. (Any scheme that remains a self-synchronizing code would require allocating at least one Basic Multilingual Plane (BMP) code point to start a sequence. Changing the purpose of a code point is disallowed.) Each Unicode code point
BMP - Misplaced Pages Continue
1408-469: The current limit of 4 bytes . The 17 planes can accommodate 1,114,112 code points. Of these, 2,048 are surrogates (used to make the pairs in UTF-16), 66 are non-characters , and 137,468 are reserved for private use , leaving 974,530 for public assignment. Planes are further subdivided into Unicode blocks , which, unlike planes, do not have a fixed size. The 338 blocks defined in Unicode 16.0 cover 27% of
1452-548: The encoding part of the string object, and thus store and support a large set of encodings including UTF-16. Most consider UTF-16 and UCS-2 to be different encodings. Examples are the PHP language and MySQL . A method to determine what encoding a system is using internally is to ask for the "length" of string containing a single non-BMP character. If the length is 2 then UTF-16 is being used. 4 indicates UTF-8. 3 or 6 may indicate CESU-8 . 1 may indicate UTF-32, but more likely indicates
1496-485: The names for these encodings (the names are case insensitive). The aliases UTF_16 or UTF16 may be meaningful in some programming languages or software applications, but they are not standard names in Internet protocols. Similar designations, UCS-2BE and UCS-2LE , are used to show versions of UCS-2 . A "character" may use any number of Unicode code points. For instance an emoji flag character takes 8 bytes, since it
1540-402: The other planes are encoded as two 16-bit code units called a surrogate pair . The first code unit is a high surrogate and the second is a low surrogate (These are also known as "leading" and "trailing" surrogates, respectively, analogous to the leading and trailing bytes of UTF-8. ): Illustrated visually, the distribution of U' between W1 and W2 looks like: Since the ranges for
1584-1946: The possible code point space, and range in size from a minimum of 16 code points (sixteen blocks) to a maximum of 65,536 code points (Supplementary Private Use Area-A and -B, which constitute the entirety of planes 15 and 16). For future usage, ranges of characters have been tentatively mapped out for most known current and ancient writing systems. 0000–0FFF 1000–1FFF 2000–2FFF 3000–3FFF 4000–4FFF 5000–5FFF 6000–6FFF 7000–7FFF 8000–8FFF 9000–9FFF A000–AFFF B000–BFFF C000–CFFF D000–DFFF E000–EFFF F000–FFFF 10000–10FFF 11000–11FFF 12000–12FFF 13000–13FFF 14000–14FFF 16000–16FFF 17000–17FFF 18000–18FFF 1A000–1AFFF 1B000–1BFFF 1C000–1CFFF 1D000–1DFFF 1E000–1EFFF 1F000–1FFFF 20000–20FFF 21000–21FFF 22000–22FFF 23000–23FFF 24000–24FFF 25000–25FFF 26000–26FFF 27000–27FFF 28000–28FFF 29000–29FFF 2A000–2AFFF 2B000–2BFFF 2C000–2CFFF 2D000–2DFFF 2E000–2EFFF 2F000–2FFFF 30000–30FFF 31000–31FFF 32000–32FFF E0000–E0FFF 15: SPUA-A F0000–FFFFF 16: SPUA-B 100000–10FFFF The first plane, plane 0 ,
1628-403: The same term [REDACTED] This disambiguation page lists articles associated with the title BMP . If an internal link led you here, you may wish to change the link to point directly to the intended article. Retrieved from " https://en.wikipedia.org/w/index.php?title=BMP&oldid=1255887401 " Category : Disambiguation pages Hidden categories: Short description
1672-629: The standard states that such arrangements should be treated as encoding errors. It is possible to unambiguously encode an unpaired surrogate (a high surrogate code point not followed by a low one, or a low one not preceded by a high one) in the format of UTF-16 by using a code unit equal to the code point. The result is not valid UTF-16, but the majority of UTF-16 encoder and decoder implementations do this when translating between encodings. To encode U+10437 (𐐷) to UTF-16: To decode U+10437 (𐐷) from UTF-16: The following table summarizes this conversion, as well as others. The colors indicate how bits from
1716-478: The string. UTF-16 is not self-synchronizing if one byte is lost or if traversal starts at a random byte. Because the most commonly used characters are all in the BMP, handling of surrogate pairs is often not thoroughly tested. This leads to persistent bugs and potential security holes, even in popular and well-reviewed application software (e.g. CVE - 2008-2938 , CVE- 2012-2135 ). The official Unicode standard says that no UTF forms, including UTF-16, can encode
1760-446: The surrogate code points. Since these will never be assigned a character, there should be no reason to encode them. However, Windows allows unpaired surrogates in filenames and other places, which generally means they have to be supported by software in spite of their exclusion from the Unicode standard. UCS-2, UTF-8, and UTF-32 can encode these code points in trivial and obvious ways, and a large amount of software does so, even though
1804-605: The surrogate range, and pairs of 16-bit values that are within the surrogate range. Both UTF-16 and UCS-2 encode code points in this range as single 16-bit code units that are numerically equal to the corresponding code points. These code points in the Basic Multilingual Plane (BMP) are the only code points that can be represented in UCS-2. As of Unicode 9.0, some modern non-Latin Asian, Middle-Eastern, and African scripts fall outside this range, as do most emoji characters. Code points from
BMP - Misplaced Pages Continue
1848-462: The web, where it is declared by under 0.003% of public web pages. UTF-8 , by comparison, accounts for over 98% of all web pages. The Web Hypertext Application Technology Working Group (WHATWG) considers UTF-8 "the mandatory encoding for all [text]" and that for security reasons browser applications should not use UTF-16. The variable length character of UTF-16, combined with the fact that most characters are not variable length (so variable length
1892-532: Was sometimes done on Unix. Python 3.3 switched internal storage to use one of ISO-8859-1 , UCS-2, or UTF-32 depending on the largest code point in the string. Python 3.12 drops some functionality (for CPython extensions) to make it easier to migrate to UTF-8 for all strings. Java originally used UCS-2, and added UTF-16 supplementary character support in J2SE 5.0 . Recently they have encouraged dumping support for any 8-bit encoding other than UTF-8 but internally UTF-16
1936-426: Was to include all required characters from most of the world's languages, as well as symbols from technical domains such as science, mathematics, and music. The original idea was to replace the typical 256-character encodings, which required 1 byte per character, with an encoding using 65,536 (2 ) values, which would require 2 bytes (16 bits) per character. Two groups worked on this in parallel, ISO/IEC JTC 1/SC 2 and
#822177