http://blog.csdn.net/pipisorry/article/details/42387045
ASCII code
The ASCII code specifies a total of 128 characters, such as a space "space" is 32 (binary 00100000), the uppercase letter A is 65 (binary 01000001). These 128 symbols (including 32 control symbols that cannot be printed out) take up only one byte of the latter 7 bits, and the first 1-bit uniform is 0.
Non-ASCII encoding
It is enough to encode 128 symbols in English, but 128 symbols are not enough to represent other languages. For example, in French, where there is a phonetic symbol above the letter, it cannot be represented by an ASCII code. As a result, some European countries decided to use the highest bits of the bytes that were idle to incorporate new symbols. For example, the code for E in French is 130 (binary 10000010). In this way, the coding system used in these European countries can represent a maximum of 256 symbols.
However, different countries have different letters, even if they are encoded using 256 symbols, the letters represented are not the same. For example, 130 is represented in the French code, but in Hebrew it represents the letter Gimel (?), and in the Russian language, another symbol is represented in the code. But anyway, in all of these encodings, 0--127 represents the same symbol, not just the 128--255 section.
As for Asian countries, the use of symbols is more, the Chinese character is about 100,000. A byte can represent only 256 symbols, which is certainly not enough, and must be expressed using multiple bytes to express a symbol. For example, the common encoding method in Simplified Chinese is GB2312, which uses two bytes to represent a Chinese character, so it is theoretically possible to represent a maximum of 256x256=65536 symbols.
Although a symbol is represented in multiple bytes, the Chinese character coding of the GB class is irrelevant to the Unicode and UTF-8 of the latter.
Unicode
As above, there are many coding methods in the world, and the same binary numbers can be interpreted into different symbols. Therefore, if you want to open a text file, you must know its encoding, or in the wrong way to interpret the code, there will be garbled. Why do e-mails often appear garbled? It is because the sender and the recipient are using different encoding methods.
It can be imagined that if there is an encoding, all the symbols in the world are included. Each symbol is given a unique encoding, then the garbled problem disappears. This is Unicode, as its name indicates, which is an encoding of all symbols.
Unicode is of course a large collection, and now the scale can accommodate the 100多万个 symbol. Each symbol is encoded differently, for example, u+0639 means that the Arabic letter ain,u+0041 represents the capital letter of the English a,u+4e25 denotes the Chinese character "strict". The specific Symbol correspondence table, may query unicode.org, or the specialized Chinese character correspondence table.
problems with Unicode
It is important to note that Unicode is just a set of symbols, which only specifies the binary code of the symbol, but does not specify how the binary code should be stored.
For example, the Chinese character "strict" Unicode is hexadecimal number 4E25, converted to a binary number is a full 15 bits (100111000100101), that is to say, the symbol of at least 2 bytes. Representing other larger symbols, it may take 3 bytes or 4 bytes, or more.
There are two serious problems here, and the first question is, how can you differentiate between Unicode and ASCII? How does the computer know that three bytes represents a symbol instead of three symbols? The second problem is that we already know that the English alphabet is only one byte to express enough, if Unicode uniform rules, each symbol with three or four bytes, then each letter must have two to three bytes is 0, which is a great waste for storage, the size of the text file will be two or three times times larger , it is unacceptable.
They result in: 1) There is a variety of Unicode storage methods, which means that there are many different binary formats that can be used to represent Unicode. 2) Unicode cannot be promoted for a long period of time until the advent of the Internet.
UTF-8
The popularization of the Internet has strongly demanded the emergence of a unified coding method. UTF-8 is the most widely used form of Unicode implementation on the Internet.
Other implementations include UTF-16 (characters in two-byte or four-byte notation) and UTF-32 (characters in four-byte notation), but not on the Internet. UTF-8 is one of the ways Unicode is implemented.
One of the biggest features of UTF-8 is that it is a variable-length coding method. It can use 1~4 bytes to represent a symbol, varying the length of a byte depending on the symbol.
the coding rules for UTF-8 are simple, with only two lines:
1) for a single-byte symbol, the first bit of the byte is set to 0, and the next 7 bits are the Unicode code for the symbol. So for the English alphabet, the UTF-8 encoding and ASCII code are the same.
2) for n-byte notation (n>1), the first n bits are set to 1, the n+1 bit is set to 0, and the first two bits of the subsequent bytes are set to 10. The rest of the bits are not mentioned, all of which are Unicode codes for this symbol.
The following table summarizes the encoding rules, and the letter x represents the bits that are available for encoding.
Unicode Symbol Range | UTF-8 Encoding method
(hex) | (binary)
--------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
According to the above table, it is very simple to interpret UTF-8 coding. If the first bit of a byte is 0, then the byte is a single character, and if the first bit is 1, how many consecutive 1 is the number of bytes that the current character occupies.
Below, or take the Chinese character "Yan" as an example, demonstrates how to implement UTF-8 encoding.
Known as "Strict" Unicode is 4E25 (100111000100101), according to the table above, you can find 4E25 in the range of the third row (0000 0800-0000 FFFF), so "strict" UTF-8 encoding requires three bytes, that is, the format is " 1110xxxx 10xxxxxx 10xxxxxx ". Then, starting from the last bits of "Yan", the X in the format is filled in sequentially, and the extra bits complement 0. This gets, "strict" UTF-8 code is "11100100 10111000 10100101", converted into 16 binary is e4b8a5.
Conversion between Unicode and UTF-8
Using the example in the previous section, you can see that the Unicode code for "strict" is 4e25,utf-8 encoding is E4B8A5, and the two are not the same. The transitions between them can be implemented by the program.
Under the Windows platform, one of the simplest ways to convert is to use the built-in Notepad applet Notepad.exe. After opening the file, click "Save as" on the "File" menu, you will get out of a dialog box, at the bottom there is a "coded" drop-down bar.
There are four options: Ansi,unicode,unicode big endian and UTF-8.
1) ANSI is the default encoding method. For English documents is ASCII encoding, for the Simplified Chinese file is GB2312 encoding (only for the Windows Simplified Chinese version, if the traditional Chinese version will use the BIG5 code).
2) Unicode encoding refers to the UCS-2 encoding method, which is a Unicode code that is stored directly in characters with two bytes. This option uses the little endian format.
3) The Unicode big endian encoding corresponds to the previous option. In the next section I will explain the meaning of little endian and big endian.
4) UTF-8 encoding, which is the encoding method mentioned in the previous section.
After selecting the "Encoding mode", click "Save" button, the file encoding method will be converted immediately.
GB2312
In 1980, China developed the gb2312-80, which included 7,445 characters, including 6,763 Chinese characters and 682 other symbols.
Gb2312-80, referred to as GB2312.
The code page in Windows is CP936.
GBK
Microsoft, the extension of the gb2312-80, that is, the use of GB 2312-80 unused encoding space, including all the GB 13000.1-93 and Unicode 1.1 in all characters of Chinese characters, developed a GBK encoding.
GBK contains 21,886 symbols, which are divided into Chinese character area and graphic symbol area. The Chinese character area consists of 21,003 characters.
GBK, as an extension to GB2312, still uses the code page CP936 representation in today's Windows system, but the same 936 code page is different from the first 936 code page that supports GB2312 encoding, and now the 936 code page supports GBK encoding, GBK It is also backwards compatible with GB2312 encoding.
Therefore, the technical code, GBK compatible with the old GB2312, but the encoding method and GB13000 different, incompatible GB13000, but the inclusion of the text, and GB13000 the same.
In terms of technical coding, the evolutionary sequence is:ASCII? GB2312? GBK? GB18030
Report:
Chinese characters related coding standard
Coding Standards |
aliases |
Standard belongs |
contains characters |
Ascii |
|
International General |
|
GB2312 |
Previous CP936 in Microsoft Windows |
Mainland China |
6,763 Kanji and 682 other symbols |
Unicode 1.1 |
|
International General |
20,902 characters |
GB13000 |
|
Mainland China |
20,902 characters |
GBK |
CP936 now in Microsoft Windows |
Microsoft |
21,886 symbols |
GB18030 |
CP54936 in Microsoft Windows |
Mainland China |
27,484 Kanji + Other minority characters |
character (storage) Exchange Standard
character encoding standard |
Storage (Interchange/transport) standard |
contains characters |
the field of character coding |
English |
|
Ascii |
European Multi-country character |
ISO 8859 |
|
Generic (Any) character |
Unicode |
UTF-8 |
UTF-16 |
UTF-32 |
Chinese Simplified |
GB2312 |
==gb2312-80 |
==gb |
==gb0 |
|
EUC-CN |
GBK |
GB18030 |
Chinese Traditional |
BIG5 |
= = Five yards large |
= = Five large yards |
|
Cccii |
CNS-11643 |
EUC-TW |
Japanese |
JIS X 0208 |
= = JIS C 6226 and JIS X 0212 |
|
Shift JIS |
Iso-2022-jp |
EUC-JP |
JIS X 0213 |
euc-jisx0213 |
Korean |
|
EUC-kr |
from:http://blog.csdn.net/pipisorry/article/details/42387045
ref:* the Absolute Minimum every software Developer absolutely, positively must Know about Unicode and Character sets
Character encoding
Character-coded notes
Character Encodings Ascii,unicode and UTF-8