Public/tip & tech

utf8를 유니코드(uni)로 변환 (euc-kr <-> utf-8) |

quantapia 2009. 5. 12. 17:54

utf8로 된 코드를 UCS-2로 변환하는 과정

 

 

입력 어절이 '가'(utf-8)일 경우

코드값은 0xEA 0xB0 0x80  이다.

 

 

 

첫번째 바이트의 첫번째 비트가 0xE0 이기 때문에 3byte로 표현된 캐릭터임을 알수 있다.

 

첫번째 바이트 처리

 

0xEA & 0xE0 == 0xE0

11101010 << 4

10100000

--------

10100000  => 0xA

 

두번째 바이트 처리

10110000

00111100 &

--------

00110000 >> 2

---------

00001100 => 0xC

 

세번째 바이트 처리

100000000

000111111 &

---------

000000000 => 0x0

 

 

UCS-2의 첫번째 바이트

0xA => 10100000

0xC => 00001100

---------------

0xAC

 

 

UCS-2의 두번째 바이트

0x0 =>  00000000

---------------

0x00

 

0xAC00

 

 

#####################################

1바이트로 표시된 경우(0x0000 ~ 0x007F)

 

1.  MSB가 0이면 아스키코드로 보고 그냥 1바이트를 잃으면된다.

 

 

#####################################

2. 2바이트로 표시된 경우( 0x0081 ~ 0x07ff까지)

 

첫비트가 0XC0인지 검사

첫번째 바이트에 0x1C & 마스킹 후 >> 2

두번째 바이트에 0x03& 마스킹후 << 6

두번째 바이트에 0x3F & 마스킹후 첫번째 바이트와 | 마스킹

 

#####################################

3. 3바이트로 표시된 경우( 0x00FF ~ 0xFFFF까지)

첫번째 바이트 << 4

두번째 바이트에 0x3C & 마스킹후 >> 2

두번째 바이트에 0x03 & 마스킹후 >> 6

세번째 바이트에 0x3F & 마스킹후 두번째 바이트에 | 마스킹