유니 코드, UTF8, GB2312, ANSI

출처 : HTTPS : //blog.csdn.net/osanwenyu/article/details/48439461

면책 조항 :이 문서는 블로거 원본입니다, 추적 에 의해-SA의 CC 4.0 저작권 계약, 복제, 원본 소스 링크이 문을 첨부 해주세요.                

                    이 링크 : https://blog.csdn.net/oSanWenYu/article/details/48439461                

                                                                              

I. 서론

한자 코딩 사람들에게 귀찮은 일을 허용하는 것입니다, 최근에 단단히 그를 알게하기로 결정했다. 인터넷은 사람들이 상세하고 철저한 두통은 참을 수 넣어 그 인기가 자세히 충분히, 단어 또는 두 가지를 넣어 반복해서 돌았 다. 또한,에 대해 쓸 수있는 몇 가지 아이디어의 결합을 통해 보면 다음, 지식 수락 무시 유니 코드가 무엇인지, 얼마나 많은 문자, GB2312 Balabala, 한자의 수는, 모든 시나리오에서 말을하지 않는 이야기가 시작된다.

 

문자 인코딩의 두 번째 개발

ASCII

-> 문자 집합을 확장

-> GB2312 (중국 본토) 

-> GBK 

- -> 유니 코드

1.ASCII 

컴퓨터가 미국에만 사용됩니다 처음으로, 사람들은 발명 코딩 영어와 이진, ASCII 사이에 자신의 매핑을 해결, 모든 경우 문자 및 기호는 일반적으로 영어로 컴파일 교정에 사용됩니다. 이 문자 적 ​​의미를 의미하지 않는다 일부 작업은하지만 종종이 같은 줄 바꿈, 캐리지 리턴, 탭 등의 제어 문자, 등, 그것으로 추가 표명했다. 모든 문자가 그것으로 통합되었다 다음 찾기,이 완벽한 인코딩을 문자 당 127 1 바이트를 차지합니다.

 

2. 문자 집합을 확장

나중에, 기술 개발, 전 세계의 컴퓨터 국가가 인기를 얻고 있지만, 다행히 영어 영역은, 영어로 직접 표시 할 수 있습니다, 영어 이외의 지역을 말하는 것은 매우 행운이 아니다. 이를 프로그래머 원래 128 플러스 128 확장 255 바이트를 차지하기까지 지난 128에서, 텍스트와 바이너리 (주로 미 국무부 라틴 문자) 사이에서 자신의 모국어 매핑 관계를 개발하는 256 총 9 또한 IBM 확장 문자 세트로 알려진 ASCII 문자 집합을,라는 확장합니다.

 

 

3. 현지화 (GB2312, BIG5, JIS 시프트 ...)

나중에 비 라틴 기반 국가는 아, 나 또한 자신의 문자 집합에 참여 봐, 그래서 바이트가 작성되었습니다로, 국가가 자신의 캐릭터를 표현하기 위해 2 바이트를 사용하고, 연령에 와서 번성 중국 AI ~ F7, 00의 두 번째 바이트 ~ FF의 첫 번째 바이트가 될 것 같은 함께 7,000 개 이상의 한자를 표현하는 문자를 표현, 직접 확장 문자 세트 및 문자 세트 호환되지 않습니다 버려진,이 말을 GB2312있다. 나중에, 일부 텍스트 소수 민족, 전통 문자를 추가, GBK 진화.

 

 

세계를 지배 4.Unicode

각 국가는 코딩 방법의 자신의 문자 인코딩을 가지고, 서로 호환되지 않으며, 이것은 분명 최선의 해결책이 아닙니다. 이를 위해 두 바이트 문자에 대한 표준화 된 유니 코드를 지원하지 않는 프로그램 용 ISO 국제기구를 제안 :

 

0000-007F : 원래 기본 ASCII 문자 세트
0080-00FF는 : 세트에 원래 문자를 확장
......
0600-06FF 아랍어
......

 

      4E00-9FBF는 : CJK 통합 표의 문자는 (한자 포함)

......

첫 128 개 문자를 코딩 ASCII는 그대로, 즉, 예컨대 "A"는 유니 0x0041 바와 같이, 바이트는 0으로 채워 후 변경되지 않은 첫번째 바이트, 다른 텍스트 예비 행 순차적 후방 위치 세상의 모든 문자와 호환!

이 시점에서 문자가 최종 형태로 진화를 인코딩. 유니 코드 공존 이유에 너무 많은 이유가 ASCII가 될 수있다, 다양한 현지화와 공존 코딩, 하나는 지금 2 바이트, 전체 두 배의 용량을 사용, 단지 바이트 "A"를 필요 . 바로 W-CDMA 중국뿐만 아니라 TD-CDMA 등의 국제 사회 참여를 유도하는 등 GB2312로서.

 

 

오? 잠깐, UTF8 말?  

 

 

세, 유니 코드 및 UTF8

유니 코드 모드를 저장하는 등의 메모장과 같은 컴퓨터 (또는 단일), 유니 코드를 사용하면 아무 문제가 없습니다 내에서 사용되는 유니 코드는 운영 체제가 메모장에서 어떤 FFEF 또는 FEFF의 시작을 표시합니다,이 설명은 두 단어의 사용은 유니 코드 인코딩 부, 매우 작은 메모리를 읽고 상황이 실질적으로 손실 바이트를 발생하지 않도록, 오류를 쓰기 때문이다. 이때, 즉 부호화 UTF-16.

 

때 그 전송 (네트워크)?

 

진짜 문제가 있다면 : 컴퓨터 (리틀 엔디안)이다 가정, 다른 컴퓨터 (작은 쪽) 유니 코드 데이터를 통해 전달해야 문자로 (당신은 좋은 0x4f60 0x597d 0x5417을) 화면에 표시됩니다.

 

당신이 0x4F60가 발생할 처음으로, 쉽게 처리하기 위해! 모니터! "당신"을 보여줘!

둘째, 잃을 0x7d, 당신은, "위안"을 취급도 쉽게하는 0x5917 건너! 

셋째, 당신이 0x5400가 발생, "미에"

 

결과는 보여 당신 Yuanmie (도대체 무슨 일을!)

 

전송 또는 결함의 측면에서 눈에 보이는, 유니 코드, 각 문자는 더 의존 후 별도의 앞에 찾고처럼 때문에, 아무 관련 로고는, 한 적은 바이트, 모든 것을 한 번 모든 왜곡되지 후.

솔루션은 각 바이트는, UTF-8은 존재에 와서 무엇을 식별하는 것입니다, 또한 분명하다.

 

네, 유니 코드 및 UTF8 변환

1110 XXXX 식별자가 3 바이트를 차지 등의 첫번째 바이트 UTF8 앞 네 문자는 현재 전송이 차지하는 바이트 수를 식별한다.

남은 바이트는 10xx xxxx를 같이 모드 (10)의 시작 부분에 사용된다.

 

이러한 "직선"유니 인코딩 같이 76F4 상기 이진 0,111,011,011,110,100 대응

고정 된 유니 코드 문자는 2 바이트, 고정 UTF8 3 바이트로 변환되기 때문에.

1110 ____, 10__ ____, 10__ ____

가 "STRAIGHT"0,111,011,011,110,100 연속 채우기 :

진 : 11100111, 10011011, 10110100, 헥사 : e79b94,이 UTF-8

 

V. 학대 UTF-8

UTF-8은 네트워크 전송을위한 시작에 불과하며, 로컬 스토리지의 형태로, 나중에 때문에 게으른 프로그래머, 문제의 다른 문제들과 많은 다른 사람들이 직접 UTF-8 저장에 그 이유에 상관없이 친구가되지 않습니다 발생하지 않습니다 없습니다.

如何知道文件用的是什么方式编码的呢?

 

二进制打开文件,开头字节能区分。

 

开头字节

Charset/encoding

EF BB BF

UTF-8

FE FF

UTF-16/UCS-2, little endian

FF FE

UTF-16/UCS-2, big endian

FF FE 00 00

UTF-32/UCS-4, little endian.

00 00 FE FF

UTF-32/UCS-4, big-endian.

 

开头字节 Charset/encoding
\ ANSI(中文是GB2312)
   
   

 

 

六、要点

unicode能表示所有的字符,任何其他的编码方式都是针对特定字符的。

unicode在本地的形式是UTF-8,UTF-16,UTF-32,网络传输形式只能是UTF-8

开头字节能区分编码方式

 

추천

출처www.cnblogs.com/MCSFX/p/11511100.html