SlideShare une entreprise Scribd logo
1  sur  28
Unicode v 0.9 박일 http://AnDStudy.com http://parkpd.egloos.com
Character Set(문자셋) ASCII 는? 26x2(알파벳 대소문자) + 10(숫자) + 특수문자 + 통제문자 등 모두 합쳐 128개 이하(2^7)로 표현 가능 문자셋에 따라 움라우트 문제 등을 표현하기 위해 7bit 에 1bit 추가. (2^8) 옛날 워드스타에서는 제어용으로 1 bit 를 사용.
완성형과 조합형 "가"를 표현하는 방법 KS C 5601 (완성형한글 2350자), 한자, 숫자 … euc-kr은 KS c 5601 이라고 한다. “강"0xB0C1 (0xB000 + 0xC0 + 0x1) 조합형 : 초성"ㄱ"과 중성"ㅏ"를 조립한 "가"0x1100,0x1161 로 나타낼 수도 있다. 초성 "ㄱ"은 0x1100 - HANGUL CHOSEONG KIYEOK 중성 "ㅏ"는 0x1161 - HANGUL JUNGSEON A 확장 1bit, 초성5bit, 중성 5bit, 종성 5bit
문제점 다른 나라로 파일을 보내면 문자셋이 달라 깨져 보임 여러 나라의 문자셋을 같이 보여줄 수 없음(도서관 같은 학술 자료) 소프트웨어를 바이너리 하나로 여러 나라에 판매할 수 없음
Code Page CHCP (change code page) 활성 코드 페이지 : 949 (완성형 확장) 한글 조합형 : 초체 1361 영어 : ANSI-437 이스라엘 : ANSI-862 로케일 utf-8 : 65001 http://msdn.microsoft.com/en-us/library/dd317756 [HKEY_CURRENT_USERonsoleSystemRoot%_system32_cmd.exe] "CodePage"=dword:000001b5 "FontSize"=dword:000c0000 "FontFamily"=dword:00000036 "FontWeight"=dword:00000190 "FaceName"=" 굴림체"
Unicode 시작 ISO(국제표준기구) 는 ISO 10646 국제 표준 체결 모든 문자를 4 바이트로 Unicode 컨소시엄 Apple, Xerox, Sun, Microsoft, NeXT : 2 바이트 Unicode 컨소시엄의 제안 일부를 ISO 가 수용 ISO 10646-1 Universal (Multiple-Octet Coded) Character Set : UCS 덕분에 Unicode 가 UCS 의 서브셋이 되었음 가장 최신 버전 표준 Unicode 5.2 ISO/IEC 10646:2003 plus Amendments 1,2,3,4,5 and 6
Unicode 구조 문자별로 번호(코드 포인트 Code Point) 지정 U+0041 U+ 는 Unicode 0041 : 코드 포인트 값으로 16 진수로 표기 U+0041 는 영어 알파벳 'A’ U+AC00 : 한글 '가‘ U+0000~U+00FF 영역은 ISO 8859-1 문자셋과 동일 ASCII 확장 문자셋(Western European. ISO) ISO/IEC 8859-1 	라틴-1 서유럽 ISO/IEC 8859-2 	라틴-2 중앙유럽부터... ISO/IEC 8859-16 라틴-10 남동유럽 까지 있다. 한글은 U+AC00 ~ U+D7AF 영역에 정의 0x10FFFF^2 : 100만개 글자(실제로는 10만개 사용)
Unicode 체계 BMP (Basic multilingual Plane. 기본언어판) 최초 65536(2^16) 개의 문자 할당되는 영역. Unicode 3.0 : 49,194 문자 정의 특히 한문에서 필요문자가 늘어나면서 보충언어판(Supplementary Plaines)을 정의 Unicode 3.1 에서는 BMP 에 2개 문자 추가, 보충언어판에44,944 개 문자 추가 음표,고대문자,한자(CJK Ideographic Extension B) CJK : 한국, 중국, 일본
Unicode 체계 Cell : 한 개의 문자가 할당되는 공간 Plane : 256 * 256 개의 cell 묶음 (FF 개) BMP : Plane 00 Group : 256 개의 Plane 묶음(7F 개)
Unicode 표현 'A’ : U+0041 Group 00, Plane 00, Cell 41 '가’ : U+AC00 Group 00, Plane 00, Cell 41 ♪ : U+1D160 Group 00, Plane 01, Cell D160 즉, Plain 번호 5비트, Cell 번호 16비트 21비트 공간 사용
Unicode 인코딩 UTF-32 UTF-16 UTF-8 UTF-7 email 용 UCS-2 UCS-4 ,[object Object],[object Object]
UTF-16 BMP 영역 안(U+0000-U+FFFF)의 문자는 그대로 표현, 밖의 문자는 변환 필요 (가변길이) Windows2000 과 그 이후 버전은 UTF-16 기반. 이전 NT 커널은UCS-2 기반. Java 2/Java 5는 UCS2/UTF-16에 의존.
UTF-16 변환 규칙 ,[object Object],[object Object]
Unicode 한글에서 받침 알기 유니코드 2.0 : 한글은 초성 19개, 중성 21개, 종성 28개(없음도 포함)가 있다. 초성 19개를 0...18까지 번호를 붙이고 중성도 0...20, 종성도 역시 0...27까지 번호를 붙인다면, 원하는 코드는 0xAC00 + x*21*28 + y*28 + z (x=초성번호, y=중성번호, z=종성번호)로 만들 수 있다. 종성에서 0 번째에 해당하는 것은 '없음'이므로 유니코드값에서 0xAC00을 뺀 후에 28로 나누어 떨어지는지 확인하면 됩니다. http://jof4002.net/Unicode wchar_t* pString = L"가각나듯"; cout << (pString[0] - 0xAC00) % 28 << endl;  // 0 cout << (pString[1] - 0xAC00) % 28 << endl;  // 1 cout << (pString[2] - 0xAC00) % 28 << endl;  // 0 cout << (pString[3] - 0xAC00) % 28 << endl;  // 19
Unicode 변환 USES_CONVERSION; pI->SomeFunctionThatNeedsUnicode(T2OLE(lpszA)); 매크로 인자결과 A2CW 	(LPCSTR) 		(LPCWSTR) A2W 		(LPCSTR) 		(LPWSTR) W2CA 	(LPCWSTR) 		(LPCSTR) W2A 		(LPCWSTR) 		(LPSTR) T2COLE 	(LPCTSTR) 		(LPCOLESTR) T2OLE 	(LPCTSTR) 	(	LPOLESTR) OLE2CT 	(LPCOLESTR) 	(LPCTSTR) OLE2T 	(LPCOLESTR) 	(LPCSTR)
http://ikpil.com/1013 #include <iostream> int main() {     std::locale::global( std::locale( "" ) ); wchar_tstringdata[4] = { 0, }; stringdata[0] = 0xac00; // 유니코드 "가" 와 같습니다  stringdata[1] = 0x3050; // 유니코드 "ぐ" 와 같습니다. stringdata[2] = 0x10a0; // 유니코드 "Ⴂ" 와 같습니다.     std::wcout << stringdata << "";     //std::wcout << L"안녕하세요"; } std::locale::global( std::locale( "" ) ); 을 호출해 줘야 하는 이유는? locale::global 은 미리 생성되어 있는 wcout에는 먹히지 않는다. wcin.imbue( locale("korean") ); 와 wcout.imbue( locale("korean") ); 사용 2. 유니코드 "?" 와 같습니다. 부터는 출력이 안 되는 이유는? 현재 imbue되어 있는 locale로는 출력할 수 없는 character set을 만나면 state의 fail bit을 셋하게 되어 있었습니다. 이후 operation들은 현재 상태가 good()이 아니므로 모두 실패한 것이었습니다. wcout.fail() 로확인하고, wcout.clear(); 를 호출하면 된다. http://ideathinking.com/blog/?p=109
BOM(Byte Order Mark) 파일이 어떤 식으로 인코딩되어 있는지 알려주는 헤더 역할 UTF-32, big-endian : 00 00 FE FF UTF-32, little-endian : FF FE 00 00 UTF-16, big-endian : FE FF UTF-16, little-endian : FF FE UTF-8 : EF BB BF UTF-8 에서는 BOM 사용을 별로 권장하지 않음. UTF-8 이 기본 언어는 ASCII 와 호환된다는 장점이 있는데, BOM 처리를 하지 않는 editor 나 웹페이지에서는 BOM 을 i≫¿ 로 출력할 수 있다.
Font 문자 -> 유니코드 -> 유니코드 인코딩-> 화면에 그리기 유니코드 폰트 Arial Unicode MS(ARIALUNI.TTF, 22,730KB) 함초롱체, 한컴 바탕 http://maplestory.pe.kr/1785
charmap
이데아 문자 유니코드 유니코드 인코딩 메모리 폰트
인코딩 SBCS(Single Byte Character Set) ASCII MBCS(Multi Byte Character Set) UTF-16, UTF-8 문자열 길이를 바로 알 수 없다. WBCS(Wide Byte Character Set) UTF-32, UCS-2, UCS-4 문자셋과인코딩이 동일 SBCD, MBCS, WBCS 는 인코딩 방법이지 인코딩은 아님
Reference 대부분의 내용과 그림들의 출처 http://www.novonetworks.com/jamestic/Unicode_1.0.pdf http://www.kristalinfo.com/K-Lab/unicode/Unicode_intro-kr.html Unicode 5.2 Character Code Chartshttp://www.unicode.org/charts/ 조엘 온 소프트웨어 : 유니코드와 문자집합에 대한 고찰 한글 코드페이지 http://www.unicode.org/charts/PDF/UAC00.pdf KS C 5601 완성형 코드 http://zbxe.bluegate.kr/42 http://whatisthat.co.kr/6 유니코드 범위 목록 http://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C_%EB%B2%94%EC%9C%84_%EB%AA%A9%EB%A1%9D http://ko.wikipedia.org/wiki/ISO/IEC_8859 http://mynotepad.tistory.com/67 http://ikpil.com/1013
Reference http://ggaman.com/tt/896 http://jof4002.net/Unicode http://www.animalpicturesarchive.com/jinsuk-kim/diary/read.php?2006/0203 http://kaistizen.net/EE/index.php/weblog/comments/unicode_hangul_to_stdout/ http://ideathinking.com/blog/?p=109 http://rein.kr/blog/archives/280 http://rein.kr/blog/archives/585 http://namoda.springnote.com/pages/2017552 http://kldp.org/node/93573 http://en.wikipedia.org/wiki/Code_page http://www.gpgstudy.com/gpgiki/%EC%9C%88%EB%8F%84%EC%9A%B0%20%EB%8B%A4%EA%B5%AD%EC%96%B4%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D
Reference Unicode - (1) 개념 http://dodoubt.tistory.com/29 Standard output으로 unicode문자를 출력하기 (Win32 console application) http://dodoubt.tistory.com/35 Unicode - (2) UTF-16(wide character) in Windows http://dodoubt.tistory.com/36 Unicode - (3) UTF-8 in Windows http://dodoubt.tistory.com/38 Unicode - (4) 문자 개수 구하기, 변환(convert) code snippet http://dodoubt.tistory.com/40
Unicode
Unicode

Contenu connexe

Tendances

Python3 brief summary
Python3 brief summaryPython3 brief summary
Python3 brief summaryHoChul Shin
 
파이썬 2와 유니코드
파이썬 2와 유니코드파이썬 2와 유니코드
파이썬 2와 유니코드성주 이
 
C Language For Arduino
C Language For ArduinoC Language For Arduino
C Language For Arduino영욱 김
 
Blockchain 4th dapp programming
Blockchain 4th dapp programmingBlockchain 4th dapp programming
Blockchain 4th dapp programmingihpark92
 
[Kerference] 시작! 리버싱 - 김종범(KERT)
[Kerference] 시작! 리버싱 - 김종범(KERT)[Kerference] 시작! 리버싱 - 김종범(KERT)
[Kerference] 시작! 리버싱 - 김종범(KERT)NAVER D2
 
Blockchain 1st bitcoin_core
Blockchain 1st bitcoin_coreBlockchain 1st bitcoin_core
Blockchain 1st bitcoin_coreihpark92
 
Blockchain 3rd smart contract programming
Blockchain 3rd smart contract programmingBlockchain 3rd smart contract programming
Blockchain 3rd smart contract programmingihpark92
 
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기Chris Ohk
 
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(3)
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(3)코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(3)
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(3)유익아카데미
 
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍흥배 최
 
Windows reversing study_basic_4
Windows reversing study_basic_4Windows reversing study_basic_4
Windows reversing study_basic_4Jinkyoung Kim
 
[devil's camp] - 알고리즘 대회와 STL (박인서)
[devil's camp] - 알고리즘 대회와 STL (박인서)[devil's camp] - 알고리즘 대회와 STL (박인서)
[devil's camp] - 알고리즘 대회와 STL (박인서)NAVER D2
 
2. c언어의 기본
2. c언어의 기본2. c언어의 기본
2. c언어의 기본SeonMan Kim
 
Seed2016 - 개미수열 한주영 (annotated)
Seed2016 - 개미수열 한주영 (annotated)Seed2016 - 개미수열 한주영 (annotated)
Seed2016 - 개미수열 한주영 (annotated)Jooyung Han
 
[2009 CodeEngn Conference 03] hkpco - DEFCON CTF 2009 Binary Leetness 100-500...
[2009 CodeEngn Conference 03] hkpco - DEFCON CTF 2009 Binary Leetness 100-500...[2009 CodeEngn Conference 03] hkpco - DEFCON CTF 2009 Binary Leetness 100-500...
[2009 CodeEngn Conference 03] hkpco - DEFCON CTF 2009 Binary Leetness 100-500...GangSeok Lee
 
[2012 CodeEngn Conference 07] nesk - Defcon 20th : 본선 CTF 문제풀이
[2012 CodeEngn Conference 07] nesk - Defcon 20th : 본선 CTF 문제풀이[2012 CodeEngn Conference 07] nesk - Defcon 20th : 본선 CTF 문제풀이
[2012 CodeEngn Conference 07] nesk - Defcon 20th : 본선 CTF 문제풀이GangSeok Lee
 
[2007 CodeEngn Conference 01] 김기오 - NASM 어셈블러 사용법과 Calling Convention
[2007 CodeEngn Conference 01] 김기오 - NASM 어셈블러 사용법과 Calling Convention[2007 CodeEngn Conference 01] 김기오 - NASM 어셈블러 사용법과 Calling Convention
[2007 CodeEngn Conference 01] 김기오 - NASM 어셈블러 사용법과 Calling ConventionGangSeok Lee
 
프로그래밍 및 실습 Chap2
프로그래밍 및 실습 Chap2프로그래밍 및 실습 Chap2
프로그래밍 및 실습 Chap2dktm
 

Tendances (19)

Python3 brief summary
Python3 brief summaryPython3 brief summary
Python3 brief summary
 
부팅
부팅부팅
부팅
 
파이썬 2와 유니코드
파이썬 2와 유니코드파이썬 2와 유니코드
파이썬 2와 유니코드
 
C Language For Arduino
C Language For ArduinoC Language For Arduino
C Language For Arduino
 
Blockchain 4th dapp programming
Blockchain 4th dapp programmingBlockchain 4th dapp programming
Blockchain 4th dapp programming
 
[Kerference] 시작! 리버싱 - 김종범(KERT)
[Kerference] 시작! 리버싱 - 김종범(KERT)[Kerference] 시작! 리버싱 - 김종범(KERT)
[Kerference] 시작! 리버싱 - 김종범(KERT)
 
Blockchain 1st bitcoin_core
Blockchain 1st bitcoin_coreBlockchain 1st bitcoin_core
Blockchain 1st bitcoin_core
 
Blockchain 3rd smart contract programming
Blockchain 3rd smart contract programmingBlockchain 3rd smart contract programming
Blockchain 3rd smart contract programming
 
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
 
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(3)
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(3)코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(3)
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(3)
 
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
 
Windows reversing study_basic_4
Windows reversing study_basic_4Windows reversing study_basic_4
Windows reversing study_basic_4
 
[devil's camp] - 알고리즘 대회와 STL (박인서)
[devil's camp] - 알고리즘 대회와 STL (박인서)[devil's camp] - 알고리즘 대회와 STL (박인서)
[devil's camp] - 알고리즘 대회와 STL (박인서)
 
2. c언어의 기본
2. c언어의 기본2. c언어의 기본
2. c언어의 기본
 
Seed2016 - 개미수열 한주영 (annotated)
Seed2016 - 개미수열 한주영 (annotated)Seed2016 - 개미수열 한주영 (annotated)
Seed2016 - 개미수열 한주영 (annotated)
 
[2009 CodeEngn Conference 03] hkpco - DEFCON CTF 2009 Binary Leetness 100-500...
[2009 CodeEngn Conference 03] hkpco - DEFCON CTF 2009 Binary Leetness 100-500...[2009 CodeEngn Conference 03] hkpco - DEFCON CTF 2009 Binary Leetness 100-500...
[2009 CodeEngn Conference 03] hkpco - DEFCON CTF 2009 Binary Leetness 100-500...
 
[2012 CodeEngn Conference 07] nesk - Defcon 20th : 본선 CTF 문제풀이
[2012 CodeEngn Conference 07] nesk - Defcon 20th : 본선 CTF 문제풀이[2012 CodeEngn Conference 07] nesk - Defcon 20th : 본선 CTF 문제풀이
[2012 CodeEngn Conference 07] nesk - Defcon 20th : 본선 CTF 문제풀이
 
[2007 CodeEngn Conference 01] 김기오 - NASM 어셈블러 사용법과 Calling Convention
[2007 CodeEngn Conference 01] 김기오 - NASM 어셈블러 사용법과 Calling Convention[2007 CodeEngn Conference 01] 김기오 - NASM 어셈블러 사용법과 Calling Convention
[2007 CodeEngn Conference 01] 김기오 - NASM 어셈블러 사용법과 Calling Convention
 
프로그래밍 및 실습 Chap2
프로그래밍 및 실습 Chap2프로그래밍 및 실습 Chap2
프로그래밍 및 실습 Chap2
 

En vedette

AIbyExample - Ch7 raven. version 0.8
AIbyExample - Ch7 raven. version 0.8AIbyExample - Ch7 raven. version 0.8
AIbyExample - Ch7 raven. version 0.8Ryan Park
 
Programming Game AI by Example. Ch7. Raven
Programming Game AI by Example. Ch7. RavenProgramming Game AI by Example. Ch7. Raven
Programming Game AI by Example. Ch7. RavenRyan Park
 
즉흥연기와프로그래밍
즉흥연기와프로그래밍즉흥연기와프로그래밍
즉흥연기와프로그래밍Ryan Park
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.Ryan Park
 
나도기술서번역한번해볼까 in NDC10
나도기술서번역한번해볼까 in NDC10나도기술서번역한번해볼까 in NDC10
나도기술서번역한번해볼까 in NDC10Ryan Park
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010Ryan Park
 
온라인 게임에서 사례로 살펴보는 디버깅
온라인 게임에서 사례로 살펴보는 디버깅온라인 게임에서 사례로 살펴보는 디버깅
온라인 게임에서 사례로 살펴보는 디버깅Ryan Park
 
나도(기술서)번역한번해볼까
나도(기술서)번역한번해볼까나도(기술서)번역한번해볼까
나도(기술서)번역한번해볼까Ryan Park
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10Ryan Park
 
위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점Ryan Park
 
Domain Driven Design Ch7
Domain Driven Design Ch7Domain Driven Design Ch7
Domain Driven Design Ch7Ryan Park
 
Oop design principle SOLID
Oop design principle SOLIDOop design principle SOLID
Oop design principle SOLIDRyan Park
 
Oop design principle
Oop design principleOop design principle
Oop design principleRyan Park
 
KGC2010 - 낡은 코드에 단위테스트 넣기
KGC2010 - 낡은 코드에 단위테스트 넣기KGC2010 - 낡은 코드에 단위테스트 넣기
KGC2010 - 낡은 코드에 단위테스트 넣기Ryan Park
 

En vedette (15)

AIbyExample - Ch7 raven. version 0.8
AIbyExample - Ch7 raven. version 0.8AIbyExample - Ch7 raven. version 0.8
AIbyExample - Ch7 raven. version 0.8
 
Taocp1 2 4
Taocp1 2 4Taocp1 2 4
Taocp1 2 4
 
Programming Game AI by Example. Ch7. Raven
Programming Game AI by Example. Ch7. RavenProgramming Game AI by Example. Ch7. Raven
Programming Game AI by Example. Ch7. Raven
 
즉흥연기와프로그래밍
즉흥연기와프로그래밍즉흥연기와프로그래밍
즉흥연기와프로그래밍
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.
 
나도기술서번역한번해볼까 in NDC10
나도기술서번역한번해볼까 in NDC10나도기술서번역한번해볼까 in NDC10
나도기술서번역한번해볼까 in NDC10
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
 
온라인 게임에서 사례로 살펴보는 디버깅
온라인 게임에서 사례로 살펴보는 디버깅온라인 게임에서 사례로 살펴보는 디버깅
온라인 게임에서 사례로 살펴보는 디버깅
 
나도(기술서)번역한번해볼까
나도(기술서)번역한번해볼까나도(기술서)번역한번해볼까
나도(기술서)번역한번해볼까
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
 
위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점
 
Domain Driven Design Ch7
Domain Driven Design Ch7Domain Driven Design Ch7
Domain Driven Design Ch7
 
Oop design principle SOLID
Oop design principle SOLIDOop design principle SOLID
Oop design principle SOLID
 
Oop design principle
Oop design principleOop design principle
Oop design principle
 
KGC2010 - 낡은 코드에 단위테스트 넣기
KGC2010 - 낡은 코드에 단위테스트 넣기KGC2010 - 낡은 코드에 단위테스트 넣기
KGC2010 - 낡은 코드에 단위테스트 넣기
 

Similaire à Unicode

전영규 유니코드 세미나_공개용
전영규 유니코드 세미나_공개용전영규 유니코드 세미나_공개용
전영규 유니코드 세미나_공개용YOUNGGYU CHUN
 
문자 인코딩과 유니코드
문자 인코딩과 유니코드문자 인코딩과 유니코드
문자 인코딩과 유니코드Yongsu Park
 
Go character encoding
Go character encodingGo character encoding
Go character encodingHomin Lee
 
빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)SeongHyun Ahn
 
인코딩 발표
인코딩 발표인코딩 발표
인코딩 발표MinJeong Kim
 
문자열이란 무엇인가
문자열이란 무엇인가문자열이란 무엇인가
문자열이란 무엇인가Seungyong Lee
 
3조(Team P.P.K.L) 문자코드
3조(Team P.P.K.L) 문자코드3조(Team P.P.K.L) 문자코드
3조(Team P.P.K.L) 문자코드ciel2230
 
Unicode & encoding
Unicode & encodingUnicode & encoding
Unicode & encodingJaeSang Yoo
 
Visual Studio를 이용한 어셈블리어 학습 part 1
Visual Studio를 이용한 어셈블리어 학습 part 1Visual Studio를 이용한 어셈블리어 학습 part 1
Visual Studio를 이용한 어셈블리어 학습 part 1YEONG-CHEON YOU
 
불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 명신 김
 

Similaire à Unicode (14)

전영규 유니코드 세미나_공개용
전영규 유니코드 세미나_공개용전영규 유니코드 세미나_공개용
전영규 유니코드 세미나_공개용
 
문자 인코딩과 유니코드
문자 인코딩과 유니코드문자 인코딩과 유니코드
문자 인코딩과 유니코드
 
문자열 이상재
문자열 이상재문자열 이상재
문자열 이상재
 
Unicode @KASA
Unicode @KASAUnicode @KASA
Unicode @KASA
 
Go character encoding
Go character encodingGo character encoding
Go character encoding
 
빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)
 
인코딩 발표
인코딩 발표인코딩 발표
인코딩 발표
 
문자코드
문자코드문자코드
문자코드
 
컴퓨터개론02
컴퓨터개론02컴퓨터개론02
컴퓨터개론02
 
문자열이란 무엇인가
문자열이란 무엇인가문자열이란 무엇인가
문자열이란 무엇인가
 
3조(Team P.P.K.L) 문자코드
3조(Team P.P.K.L) 문자코드3조(Team P.P.K.L) 문자코드
3조(Team P.P.K.L) 문자코드
 
Unicode & encoding
Unicode & encodingUnicode & encoding
Unicode & encoding
 
Visual Studio를 이용한 어셈블리어 학습 part 1
Visual Studio를 이용한 어셈블리어 학습 part 1Visual Studio를 이용한 어셈블리어 학습 part 1
Visual Studio를 이용한 어셈블리어 학습 part 1
 
불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14
 

Plus de Ryan Park

OOP 설계 원칙 S.O.L.I.D.
OOP 설계 원칙 S.O.L.I.D.OOP 설계 원칙 S.O.L.I.D.
OOP 설계 원칙 S.O.L.I.D.Ryan Park
 
프로그램은 왜 실패하는가 1장
프로그램은 왜 실패하는가 1장프로그램은 왜 실패하는가 1장
프로그램은 왜 실패하는가 1장Ryan Park
 
Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Ryan Park
 
UnitTest, Tdd For Games Kgc2007 ParkPD
UnitTest, Tdd For Games Kgc2007 ParkPDUnitTest, Tdd For Games Kgc2007 ParkPD
UnitTest, Tdd For Games Kgc2007 ParkPDRyan Park
 
Agile Test Driven Development For Games What, Why, And How
Agile Test Driven Development For Games What, Why, And HowAgile Test Driven Development For Games What, Why, And How
Agile Test Driven Development For Games What, Why, And HowRyan Park
 
Agd Test Driven Development For Games What, Why, And How)(Game Connect 2006...
Agd   Test Driven Development For Games What, Why, And How)(Game Connect 2006...Agd   Test Driven Development For Games What, Why, And How)(Game Connect 2006...
Agd Test Driven Development For Games What, Why, And How)(Game Connect 2006...Ryan Park
 

Plus de Ryan Park (6)

OOP 설계 원칙 S.O.L.I.D.
OOP 설계 원칙 S.O.L.I.D.OOP 설계 원칙 S.O.L.I.D.
OOP 설계 원칙 S.O.L.I.D.
 
프로그램은 왜 실패하는가 1장
프로그램은 왜 실패하는가 1장프로그램은 왜 실패하는가 1장
프로그램은 왜 실패하는가 1장
 
Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005
 
UnitTest, Tdd For Games Kgc2007 ParkPD
UnitTest, Tdd For Games Kgc2007 ParkPDUnitTest, Tdd For Games Kgc2007 ParkPD
UnitTest, Tdd For Games Kgc2007 ParkPD
 
Agile Test Driven Development For Games What, Why, And How
Agile Test Driven Development For Games What, Why, And HowAgile Test Driven Development For Games What, Why, And How
Agile Test Driven Development For Games What, Why, And How
 
Agd Test Driven Development For Games What, Why, And How)(Game Connect 2006...
Agd   Test Driven Development For Games What, Why, And How)(Game Connect 2006...Agd   Test Driven Development For Games What, Why, And How)(Game Connect 2006...
Agd Test Driven Development For Games What, Why, And How)(Game Connect 2006...
 

Unicode

  • 1. Unicode v 0.9 박일 http://AnDStudy.com http://parkpd.egloos.com
  • 2. Character Set(문자셋) ASCII 는? 26x2(알파벳 대소문자) + 10(숫자) + 특수문자 + 통제문자 등 모두 합쳐 128개 이하(2^7)로 표현 가능 문자셋에 따라 움라우트 문제 등을 표현하기 위해 7bit 에 1bit 추가. (2^8) 옛날 워드스타에서는 제어용으로 1 bit 를 사용.
  • 3. 완성형과 조합형 "가"를 표현하는 방법 KS C 5601 (완성형한글 2350자), 한자, 숫자 … euc-kr은 KS c 5601 이라고 한다. “강"0xB0C1 (0xB000 + 0xC0 + 0x1) 조합형 : 초성"ㄱ"과 중성"ㅏ"를 조립한 "가"0x1100,0x1161 로 나타낼 수도 있다. 초성 "ㄱ"은 0x1100 - HANGUL CHOSEONG KIYEOK 중성 "ㅏ"는 0x1161 - HANGUL JUNGSEON A 확장 1bit, 초성5bit, 중성 5bit, 종성 5bit
  • 4. 문제점 다른 나라로 파일을 보내면 문자셋이 달라 깨져 보임 여러 나라의 문자셋을 같이 보여줄 수 없음(도서관 같은 학술 자료) 소프트웨어를 바이너리 하나로 여러 나라에 판매할 수 없음
  • 5. Code Page CHCP (change code page) 활성 코드 페이지 : 949 (완성형 확장) 한글 조합형 : 초체 1361 영어 : ANSI-437 이스라엘 : ANSI-862 로케일 utf-8 : 65001 http://msdn.microsoft.com/en-us/library/dd317756 [HKEY_CURRENT_USERonsoleSystemRoot%_system32_cmd.exe] "CodePage"=dword:000001b5 "FontSize"=dword:000c0000 "FontFamily"=dword:00000036 "FontWeight"=dword:00000190 "FaceName"=" 굴림체"
  • 6. Unicode 시작 ISO(국제표준기구) 는 ISO 10646 국제 표준 체결 모든 문자를 4 바이트로 Unicode 컨소시엄 Apple, Xerox, Sun, Microsoft, NeXT : 2 바이트 Unicode 컨소시엄의 제안 일부를 ISO 가 수용 ISO 10646-1 Universal (Multiple-Octet Coded) Character Set : UCS 덕분에 Unicode 가 UCS 의 서브셋이 되었음 가장 최신 버전 표준 Unicode 5.2 ISO/IEC 10646:2003 plus Amendments 1,2,3,4,5 and 6
  • 7. Unicode 구조 문자별로 번호(코드 포인트 Code Point) 지정 U+0041 U+ 는 Unicode 0041 : 코드 포인트 값으로 16 진수로 표기 U+0041 는 영어 알파벳 'A’ U+AC00 : 한글 '가‘ U+0000~U+00FF 영역은 ISO 8859-1 문자셋과 동일 ASCII 확장 문자셋(Western European. ISO) ISO/IEC 8859-1 라틴-1 서유럽 ISO/IEC 8859-2 라틴-2 중앙유럽부터... ISO/IEC 8859-16 라틴-10 남동유럽 까지 있다. 한글은 U+AC00 ~ U+D7AF 영역에 정의 0x10FFFF^2 : 100만개 글자(실제로는 10만개 사용)
  • 8.
  • 9. Unicode 체계 BMP (Basic multilingual Plane. 기본언어판) 최초 65536(2^16) 개의 문자 할당되는 영역. Unicode 3.0 : 49,194 문자 정의 특히 한문에서 필요문자가 늘어나면서 보충언어판(Supplementary Plaines)을 정의 Unicode 3.1 에서는 BMP 에 2개 문자 추가, 보충언어판에44,944 개 문자 추가 음표,고대문자,한자(CJK Ideographic Extension B) CJK : 한국, 중국, 일본
  • 10. Unicode 체계 Cell : 한 개의 문자가 할당되는 공간 Plane : 256 * 256 개의 cell 묶음 (FF 개) BMP : Plane 00 Group : 256 개의 Plane 묶음(7F 개)
  • 11. Unicode 표현 'A’ : U+0041 Group 00, Plane 00, Cell 41 '가’ : U+AC00 Group 00, Plane 00, Cell 41 ♪ : U+1D160 Group 00, Plane 01, Cell D160 즉, Plain 번호 5비트, Cell 번호 16비트 21비트 공간 사용
  • 12.
  • 13. UTF-16 BMP 영역 안(U+0000-U+FFFF)의 문자는 그대로 표현, 밖의 문자는 변환 필요 (가변길이) Windows2000 과 그 이후 버전은 UTF-16 기반. 이전 NT 커널은UCS-2 기반. Java 2/Java 5는 UCS2/UTF-16에 의존.
  • 14.
  • 15.
  • 16. Unicode 한글에서 받침 알기 유니코드 2.0 : 한글은 초성 19개, 중성 21개, 종성 28개(없음도 포함)가 있다. 초성 19개를 0...18까지 번호를 붙이고 중성도 0...20, 종성도 역시 0...27까지 번호를 붙인다면, 원하는 코드는 0xAC00 + x*21*28 + y*28 + z (x=초성번호, y=중성번호, z=종성번호)로 만들 수 있다. 종성에서 0 번째에 해당하는 것은 '없음'이므로 유니코드값에서 0xAC00을 뺀 후에 28로 나누어 떨어지는지 확인하면 됩니다. http://jof4002.net/Unicode wchar_t* pString = L"가각나듯"; cout << (pString[0] - 0xAC00) % 28 << endl; // 0 cout << (pString[1] - 0xAC00) % 28 << endl; // 1 cout << (pString[2] - 0xAC00) % 28 << endl; // 0 cout << (pString[3] - 0xAC00) % 28 << endl; // 19
  • 17. Unicode 변환 USES_CONVERSION; pI->SomeFunctionThatNeedsUnicode(T2OLE(lpszA)); 매크로 인자결과 A2CW (LPCSTR) (LPCWSTR) A2W (LPCSTR) (LPWSTR) W2CA (LPCWSTR) (LPCSTR) W2A (LPCWSTR) (LPSTR) T2COLE (LPCTSTR) (LPCOLESTR) T2OLE (LPCTSTR) ( LPOLESTR) OLE2CT (LPCOLESTR) (LPCTSTR) OLE2T (LPCOLESTR) (LPCSTR)
  • 18. http://ikpil.com/1013 #include <iostream> int main() { std::locale::global( std::locale( "" ) ); wchar_tstringdata[4] = { 0, }; stringdata[0] = 0xac00; // 유니코드 "가" 와 같습니다 stringdata[1] = 0x3050; // 유니코드 "ぐ" 와 같습니다. stringdata[2] = 0x10a0; // 유니코드 "Ⴂ" 와 같습니다. std::wcout << stringdata << ""; //std::wcout << L"안녕하세요"; } std::locale::global( std::locale( "" ) ); 을 호출해 줘야 하는 이유는? locale::global 은 미리 생성되어 있는 wcout에는 먹히지 않는다. wcin.imbue( locale("korean") ); 와 wcout.imbue( locale("korean") ); 사용 2. 유니코드 "?" 와 같습니다. 부터는 출력이 안 되는 이유는? 현재 imbue되어 있는 locale로는 출력할 수 없는 character set을 만나면 state의 fail bit을 셋하게 되어 있었습니다. 이후 operation들은 현재 상태가 good()이 아니므로 모두 실패한 것이었습니다. wcout.fail() 로확인하고, wcout.clear(); 를 호출하면 된다. http://ideathinking.com/blog/?p=109
  • 19. BOM(Byte Order Mark) 파일이 어떤 식으로 인코딩되어 있는지 알려주는 헤더 역할 UTF-32, big-endian : 00 00 FE FF UTF-32, little-endian : FF FE 00 00 UTF-16, big-endian : FE FF UTF-16, little-endian : FF FE UTF-8 : EF BB BF UTF-8 에서는 BOM 사용을 별로 권장하지 않음. UTF-8 이 기본 언어는 ASCII 와 호환된다는 장점이 있는데, BOM 처리를 하지 않는 editor 나 웹페이지에서는 BOM 을 i≫¿ 로 출력할 수 있다.
  • 20. Font 문자 -> 유니코드 -> 유니코드 인코딩-> 화면에 그리기 유니코드 폰트 Arial Unicode MS(ARIALUNI.TTF, 22,730KB) 함초롱체, 한컴 바탕 http://maplestory.pe.kr/1785
  • 22. 이데아 문자 유니코드 유니코드 인코딩 메모리 폰트
  • 23. 인코딩 SBCS(Single Byte Character Set) ASCII MBCS(Multi Byte Character Set) UTF-16, UTF-8 문자열 길이를 바로 알 수 없다. WBCS(Wide Byte Character Set) UTF-32, UCS-2, UCS-4 문자셋과인코딩이 동일 SBCD, MBCS, WBCS 는 인코딩 방법이지 인코딩은 아님
  • 24. Reference 대부분의 내용과 그림들의 출처 http://www.novonetworks.com/jamestic/Unicode_1.0.pdf http://www.kristalinfo.com/K-Lab/unicode/Unicode_intro-kr.html Unicode 5.2 Character Code Chartshttp://www.unicode.org/charts/ 조엘 온 소프트웨어 : 유니코드와 문자집합에 대한 고찰 한글 코드페이지 http://www.unicode.org/charts/PDF/UAC00.pdf KS C 5601 완성형 코드 http://zbxe.bluegate.kr/42 http://whatisthat.co.kr/6 유니코드 범위 목록 http://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C_%EB%B2%94%EC%9C%84_%EB%AA%A9%EB%A1%9D http://ko.wikipedia.org/wiki/ISO/IEC_8859 http://mynotepad.tistory.com/67 http://ikpil.com/1013
  • 25. Reference http://ggaman.com/tt/896 http://jof4002.net/Unicode http://www.animalpicturesarchive.com/jinsuk-kim/diary/read.php?2006/0203 http://kaistizen.net/EE/index.php/weblog/comments/unicode_hangul_to_stdout/ http://ideathinking.com/blog/?p=109 http://rein.kr/blog/archives/280 http://rein.kr/blog/archives/585 http://namoda.springnote.com/pages/2017552 http://kldp.org/node/93573 http://en.wikipedia.org/wiki/Code_page http://www.gpgstudy.com/gpgiki/%EC%9C%88%EB%8F%84%EC%9A%B0%20%EB%8B%A4%EA%B5%AD%EC%96%B4%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D
  • 26. Reference Unicode - (1) 개념 http://dodoubt.tistory.com/29 Standard output으로 unicode문자를 출력하기 (Win32 console application) http://dodoubt.tistory.com/35 Unicode - (2) UTF-16(wide character) in Windows http://dodoubt.tistory.com/36 Unicode - (3) UTF-8 in Windows http://dodoubt.tistory.com/38 Unicode - (4) 문자 개수 구하기, 변환(convert) code snippet http://dodoubt.tistory.com/40