UTF ENCODING (UTF-8,16,32) 발표자 - 김규호.

Slides:



Advertisements
Similar presentations
10-7 부동소수점 (Floating-Point) 계산  컴퓨터에서 숫자를 표기하는 방법  가수 (Fraction) : 부호화된 고정소수점 숫자 지수 (Exponent) : 소수점의 위치를 표시 ( 예 )10 진수 를 표기하면 Fraction Exponent.
Advertisements

- C-style formatting - format() method.  file = open(‘file.txt’, [mode]) ◦ Mode  ‘r’: for reading (default)  ‘w’: for writing (truncate if already.
Python Ch.06 RaspberryPi Sejin Oh. Raspberry Pi Python  IDLE(Integrated Development Environment)  라즈베리 파이 배포본들은 일반적으로 파이썬과 파이썬 3 의 IDLE 파 이썬 개발 도구를.
1. 2 최종 사용자. “ 이런 한글 깨지네.” Unicode 에 대해 전혀 모르는 개발자. UTF-8 을 쓰니 Unicode 완비되었다고 생각하는 사람. 세상에는 여러 종류의 인코딩이 존재하고 있다는 것을 아는 사람. UTF-8 이 곧 Unicode 가 아니라는 것을.
Chapter 04 컴퓨터에서 데이터 표현. 04 컴퓨터에서 데이터 표현 2 인코딩 (encoding) – 현실세계의 정보를 컴퓨터 내부에서 처리할 수 있는 이진수로 변환하는 방법 1. 컴퓨터 속에서 데이터 표현 원리 0 - 아빠 1 - 엄마 00 - 아빠 01 - 엄마.
자료의 표현 1. 문자 자료의 표현 2. 멀티미디어 자료의 표현. 컴퓨터일반자료의 표현 학습 목표 ◆ 컴퓨터에서 사용하는 문자 데이터의 표현 방법을 이해할 수 있다. ◆ 컴퓨터에서 사용하는 멀티미디어 데 이터의 표현 방법을 설명할 수 있다.
Chapter 12. 배열. 배열  동일한 항목들이 동일한 크기로 연속적으로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조.
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1/26 5 장 텍스트의 표현 5.1. 문자코드 체계 ASCII 코드 한글 코드 ISO 2022 코드 유니코드 KS X 폰트 폰트 형식 문자 편집기 5.3. 텍스트.
UNICODE Seminar – 한국에서 프로그래머 하기 By bleujin.
9 주차 실습강의 학기, 소프트웨어 설계 및 실험 ( Ⅰ ). Artificial Intelligence Laboratory Open API  API(Application Programming Interface)  응용 프로그램에서 사용할 수 있도록.
문자코드 1 박 2 일 (4 조 ) 이경도 이준집 이수연 엄태규. 문자코드란 ? 문자나 기호를 컴퓨터로 다루기 위하여, 문자나 기호 하나하나에 할당 시키는 고유의 숫자를 말하는 것이다.
Format String Attack! 포맷 스트링 공격 경일대학교 사이버보안학과 학년 남주호.
컴퓨터와 인터넷.
조원 : 김영재(코딩) 이지영(스토리) 임병욱(그래픽)
재료수치해석 HW # 박재혁.
Lesson 6. 형변환.
5장. 참조 타입.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Error Detection and Correction
임베디드 실습 # LED, 7’Segment 제어
6장. printf와 scanf 함수에 대한 고찰
2007 1학기 11 프로젝트 기초 실습.
손에 잡히는 vim (3/4) 김선영 버 전: 버 전: 인사이트 출판사 가메출판사 저자홈페이지.
Tail-recursive Function, High-order Function
jConnect에서 한글 처리문제 및 해결방안
유니코드의 다양한 이해 Samsung Software Membership – 22기 백재현.
11장. 1차원 배열.
2007년 1학기 전산학개론 성신여자대학교 컴퓨터정보학부
Delphi 2009 / C++Builder 2009의 Unicode 및 Internationalization 지원
UNICODE Seminar – 한국에서 프로그래머 하기
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
JA A V W. 03.
인터넷응용프로그래밍 JavaScript(Intro).
문자 인코딩에 관하여 팀 E.E 강재문, 윤영호 백진후, 조남훈.
이름 : 황 상 두 전화번호 : 이메일 : PinTool 이름 : 황 상 두 전화번호 : 이메일 :
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
21. 숫자가 만드는 문자, 문자 코드 문자 정보 문자 정보를 이진수로 표현하는 방법을 이해한다.
“정보의 표현” 이 점 숙 컴퓨터와 인터넷 “정보의 표현” 이 점 숙
“소프트웨어의 표현” 이 점 숙 컴퓨터와 소프트웨어 “소프트웨어의 표현” 이 점 숙
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
☆ASCII☆ 김연주.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
연산자 (Operator).
프로그래밍 원리 Chapter 05 자바스크립트 기초 신한대학교 IT융합공학부 박 호 균.
2장. 변수와 타입.
자바 5.0 프로그래밍.
8주차: Strings, Arrays and Pointers
1. 2진 시스템.
Choi Seong Yun 컴퓨터 프로그래밍 기초 #03 : 변수와 자료형 Choi Seong Yun
계산기.
Canary value 스택 가드(Stack Guard).
5 함수.
에어 PHP 입문.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
인코딩.
문자코드, 문자 입출력 한국어 정보의 전산 처리
9 브라우저 객체 모델.
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
제 4 장 Record.
JSP Programming with a Workbook
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
김선균 컴퓨터 프로그래밍 기초 - 12th : 문자열 - 김선균
윈도우에서의 유니코드.
8주 실습강의 학기, 소프트웨어 설계 및 실험(Ⅰ).
실 습 2.
20 XMLHttpRequest.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

UTF ENCODING (UTF-8,16,32) 발표자 - 김규호

차례 UTF Encoding ? 유니코드 Character Set 유니코드 인코딩 UTF-8, 16 ICONV 인코딩 API - c, java 참고자료

UTF Encoding ? UTF-8 유니코드 ( UCS-2, UCS4 ) UTF-16 UTF-32

유니코드의 Character Set UCS-2(Universal Character Set 2) 2Byte Character Set 1개의 언어판 (BMP)을 정의 1개의 언어판 = 65536개의 코드 묶음 UCS-4(Universal Character Set 4) 4Byte Chracter Set 32,768 언어판 정의 F BMP ( Basic Multilingual plane )

Suitable external encoding of Unicode 왜 인코딩이 필요한가? UCS-2,4 는 유니코드를 저장하는 변수의 크기를 정의 But, 바이트 순서에 대해서 표준화하지 못했음. 파일처리 프로그램들이 바이트 단위로 동작 UCS와는 잘 맞지 않음 즉, 파일을 인식 시 이 파일이 UCS-2,UCS-4인지 인식하고 각 경우를 구분해서 모두 다르게 구현해야 하는 문제 발생 We Need Suitable external encoding of Unicode

1 A 3 1 3 ??

유니코드 인코딩(UTF) UTF(Unicode Transformation Format) UTF-8(in web) MIN: 8bit, MAX: 32bit(1 Byte * 4) UTF-16(in windows, java) MIN: 16bit, MAX: 32bit(2 Byte * 2) UTF-32(in unix) MIN: 32bit, MAX: 32bit(4 Byte * 1)

UTF-8 장점 & 단점 장점 단점 하위 호환성(ASCII) – 하위8비트가 ascii 코드와 동일 XML문서의 표준 인코딩 모든 유니코드 문자 표현 가능 미리 바이트 크기를 알 수 있다. 간단한 비트 연산만 사용해서 효율적 단점 크기가 크다.(가변적 인코딩) 1 ~ 4 byte 문자열 처리가 간단하지 않다.

UTF-8 0xxxxxxx 110xxxxx 10xxxxxx 1110xxxx 11110zzz 10zzxxxx 코드범위 UTF-8 설 명 000000-00007F 1Byte 0xxxxxxx ASCII와 동일한 범위 (MSB = 0) 000080-0007FF 2Byte 110xxxxx 10xxxxxx 첫 바이트는 ‘1’로 그 문자를 표시하는데 필요한 바이트 수 결정 110(2Byte) or 1110(3바이트) 나머지 바이트들의 상위 비트는 10 000800-00FFFF 3Byte 1110xxxx 010000-10FFFF 4Byte 11110zzz 10zzxxxx UTF-16 surrogate 영역 나머진 동일

1 C 7 4

1 8 1 C 7 4 1 F

0xxxxxxx 110xxxxx 10xxxxxx 1110xxxx 11110zzz 10zzxxxx 코드범위 UTF-8 설 명 000000-00007F 1Byte 0xxxxxxx ASCII와 동일한 범위 (MSB = 0) 000080-0007FF 2Byte 110xxxxx 10xxxxxx 첫 바이트는 ‘1’로 그 문자를 표시하는데 필요한 바이트 수 결정 110(2Byte) or 1110(3바이트) 나머지 바이트들의 상위 비트는 10 000800-00FFFF 3Byte 1110xxxx 010000-10FFFF 4Byte 11110zzz 10zzxxxx UTF-16 surrogate 영역 나머지는 동일

2진수로 표현 C704 = 1100 0111 0000 0100 뒤 에서부터 6자리씩 끊어서 표기 1100 011100 000100 첫 바이트는 ‘1’로 그 문자를 표시하는데 필요한 바이트 수 결정 Ex) 110(2Byte) or 1110(3바이트) 나머지 바이트들의 상위 비트는 10 11 10 1100 10 011100 10 000100 16진수로 표시 EC 9C 84 Unicode ‘위’ C704 는 UTF-8 EC 9C 84 로 인코딩 됨

` Uni-Searcher Site http://www.isthisthingon.org/unicode/index.phtml

UTF-16 인코딩의 기본 단위는 16비트, 즉 2바이트 기본 언어판(BMP) 2Byte 인코딩 63,488개 (= 65,536 – 2,048) 문자 표현 가능 대행문자 영역 2,048개를 제외한 BMP 63,488개의 코드를 문자로 사용. ucs-2와 동일 보충 언어판(SMP) 4Byte 인코딩 U+10000 ~ U+10FFFF : 100만여개(1,048,576개) 대행문자(surrogate) 영역 2개의 16-bit 쌍을 이용 16개 SMP 언어판 코드(1,048,576개 문자) 표현 가능 Surrogate <High, Low> : 1024*1024 High Surrogate : U+D800 ~ U+DBFF Low Surrogate : U+DC00 ~ U+DFFF

UTF-16 인코딩 방법 yyyyyyyy xxxxxxxx xxxxxxxx yyyyyyyy 110110ZZ ZZxxxxxx 내 용 UTF-8 UTF-16 yyyyyyyy xxxxxxxx UTF-16BE (Big Edian) UTF-16LE (Little Edian) xxxxxxxx yyyyyyyy High Surrogate 110110ZZ ZZxxxxxx Low Surrogate 110111yy yyyyyyyy 보충 언어판 00000000 000zzzzz xxxxxxyy yyyyyyyy * ZZZZ = zzzzz-1

Iconv Iconv 유닉스 계열의 OS에서, 캐릭터 encoding 을 하는데 쓰이는 표준화된 API

Iconv IconV ex) # iconv -f EUC-KR -t UTF-8 -o 다른파일명 원본파일명 입/출력 형식 지정: -f, --from-code=<이름> 원 문서 인코딩 -t, --to-code=<이름> 출력 인코딩 출력 조정: -o, --output=FILE 출력 파일

Iconv PHP 에서 사용할때 string iconv ( string $in_charset , string $out_charset , string $str )  

인코딩 API 유니코드와 ANSI 문자열간의 변환을 위해 MultiByteToWideChar : 멀티바이트 문자열을 유니코드로 변환하기 WideCharToMultiByte : 유니코드 문자열을 멀티바이트 문자열로 변환 ANSI(MultiByte) -> UCS-2(WideChar) -> UTF-8(MultiByte)

인코딩 API int WideCharToMultiByte{ UINT CodePage, // code page DWORD dwFlags, // performance and mapping flags LPCWSTR lpWideCharStr, // wide-character string Int cchWideChar, // number of chars in string LPSTR lpMultiByteStr, // buffer for new string Int cbMultiByte, // size of buffer LPCSTR lpDefaultChar, // default for unmappable chars LPBOOL lpUsedDefaultChar // set when default char used }; Code Page에는 CP_ACP (ANSI코드), CP_UTF8 등이 올수 있다 ANSI(MultiByte) -> UCS-2(WideChar) -> UTF-8(MultiByte)

인코딩 API Int MultiByteToWideChar{ UINT CodePage, // code page DWORD dwFlags, // performance and mapping flags LPCSTR lpMultiByteStr, // 변환할 MultiByte String Int cbMultiByte, // 변환할 MultiByte String 크기 LPWSTR lpWideCharStr, // buffer for new string Int cchWideChar, // size of buffer }; Code Page에는 CP_ACP (ANSI코드), CP_UTF8 등이 올수 있다 ANSI(MultiByte) -> UCS-2(WideChar) -> UTF-8(MultiByte)

인코딩 API ANSI To UTF8 ANSI(MultiByte) -> UCS-2(WideChar) -> UTF-8(MultiByte) 따라서 WideCharToMultiByte 함수를 호출할 때 첫 번째 인자로 CP_UTF8을 지정하면 된다

인코딩 API 자바 getByte 함수 사용 String.getByte(argument) 캐릭터셋 설명 US-ASCII ISO-8859-1 ISO LATIN 알파벳 UTF-8 8비트 UCS 형식 UTF-16BE 16비트 UCS 형식, 빅인디언 UTF-16LE 16비트 UCS 형식, 리틀인디언 UTF-16 16비트 UCS 변환형식, 옵션의 바이트 순서대로

인코딩 API 예제

참고자료 http://cafe.naver.com/q69.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=44522 http://ko.wikipedia.org/wiki/UTF-8 http://ko.wikipedia.org/wiki/UTF-16BE http://wiki.kldp.org/Translations/html/UTF8-Unicode-KLDP/UTF8-Unicode-KLDP-7.html http://ko.wikipedia.org/wiki/%EB%B0%94%EC%9D%B4%ED%8A%B8_%EC%88%9C%EC%84%9C_%ED%91%9C%EC%8B%9D http://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C

감사합니다