1. 2 최종 사용자. “ 이런 한글 깨지네.” Unicode 에 대해 전혀 모르는 개발자. UTF-8 을 쓰니 Unicode 완비되었다고 생각하는 사람. 세상에는 여러 종류의 인코딩이 존재하고 있다는 것을 아는 사람. UTF-8 이 곧 Unicode 가 아니라는 것을.

Slides:



Advertisements
Similar presentations
- C-style formatting - format() method.  file = open(‘file.txt’, [mode]) ◦ Mode  ‘r’: for reading (default)  ‘w’: for writing (truncate if already.
Advertisements

1 멀티미디어 데이터 : 텍스트 (Text) Lecture #2. 2 멀티미디어 구성 요소  멀티미디어 구성 요소 : 1) 텍스트 2) 그래픽 & 이미지 3) 사운드 4) 비디오 & 애니메이션  미디어 접근법 : 1) 특징 : 정보표현 능력 vs 비용 등 2) 컴퓨터.
I am Computer I am Computer 4 장 데이터의 표현 방식과 연산 4.1 아날로그신호와 디지털 신호 4.2 숫자의 표현 방식 4.3 문자의 표현 방식 4.4 문자, 숫자를 제외한 데이터의 표현방식 4.5 컴퓨터에서의 정보처리 : 연산 4.6 데이터의 처리.
Chapter 03. 디지털 코드. 다양한 디지털 코드를 구분하여 이해할 수 있다. 문자와 숫자를 나타내는 코드를 이해할 수 있다. 가중치 코드와 비가중치 코드를 이해하고 이를 활용할 수 있다. 에러 검출 코드를 이해하고 이를 활용할 수 있다. 01. BCD 코드와 3.
열왕기 상하는 중요하다 ! 왜 ? 시가 3 권 예언서 12 원 열왕기 상하는 중요하다 ! 대라느스 단겔학슥말.
3 학년 문제가 남느냐, 내가 남느냐 1. ( 아씨방 일곱 동무 ) 아씨의 방에는 바느질을 위한 친구가 몇 명이 있었나요 ? 정답은 ? 일곱.
멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
UNICODE Seminar – 한국에서 프로그래머 하기 By bleujin.
1 협력사명 제안서 요약 기업 현황 년.월년.월주요 연혁 이전 대표이사ㅇㅇㅇ ( ㅇㅇ년생 ) 설립년도 ( 사업장 )YYYY.MM( 서울 ) 특화분야기업형태 인력현황상시고용인력 : xx 명 ( 특급 :xx 고급 :xx, 중급 :xx, 초급.
9 주차 실습강의 학기, 소프트웨어 설계 및 실험 ( Ⅰ ). Artificial Intelligence Laboratory Open API  API(Application Programming Interface)  응용 프로그램에서 사용할 수 있도록.
- 1 - 지능형 통신망을 활용한 문자 수신 서비스 주식회사 온디노 지능형 통신망을 이용한 MT & MO 서비스.
제 1 강 : 자료 구조 개요 서울산업기술대학교 게임공학과김태환 C.P MSN/ Penguri Entertainment Co, Ltd. All rights reserved.
(2) 고대 국가의 성립  1) 고대 국가의 성격    ① 중앙 집권 체제      - 국왕의 지위 강화, 부족장 세력의 통합,
2015 담당 강사 : 정세진 중국 명문 감상 2015 담당 강사 : 정세진
해시 함수.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
최저가낙찰제의 입찰금액 적정성 심사 시 절감사유서 작성·평가 가이드라인 설명회 2008년 7월 22일 (화)
4부 클래스 라이브러리 “4부에서는 자바 언어의 API인 클래스 라이브러리에 관해 설명합니다
연습 문제 풀이 E BF F8 85 A5 E5 9B 37 A5 E5 9B FF 버전 헤더길이 서비스유형 전체길이
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
논리의 표현 진법과 숫자 표현 2진수와 10진수 문자의 표현
2강. JAVA 프로그래밍이란?-II & 변수 JAVA 프로그램 환경설정과 실행 방법 변수란?
명품 JAVA Essential.
XXX 제안서 회 사 명 ○○○○ 주 소 대표 전화 F A X 사업자번호.
통계자료의 탐색적 분석(EDA) 84 제 6 장 확률모형과의 비교 1. 그룹 데이터, 도수 자료
제 2 장 기본 문법 (1-2) 주제 : 객체, 변수, 모듈, 상수.
문자코드 변환 콘코던서 형태소분석기 한국어 정보의 전산처리
Data Communications 제 10 장 오류 제어와 흐름 제어.
with 신 동 면 교수님 임지영 장영태 조재영 황선희 황예빈
인류의 분산 언어의 대 혼잡시기 창조,타락 홍수 바벨탑사건 아브라함 모세 BC 고조선 하/은/주 (창 11:7,9) 『[7] 자, 우리가.
제 2장 컴퓨터의 등장과 발전.
도덕 1학년 1학기 2. 개성신장과 인격 도야:인물학습 석가모니 인물학습 -석가모니.
UTF ENCODING (UTF-8,16,32) 발표자 - 김규호.
작업장에서 불의의사고로 절단사고가 발생했다면
손에 잡히는 vim (3/4) 김선영 버 전: 버 전: 인사이트 출판사 가메출판사 저자홈페이지.
Chapter 03. 디지털 코드.
유니코드의 다양한 이해 Samsung Software Membership – 22기 백재현.
2007년 1학기 전산학개론 성신여자대학교 컴퓨터정보학부
Delphi 2009 / C++Builder 2009의 Unicode 및 Internationalization 지원
9. 아두이노를 이용한 FND 제어 - 스마트 폰으로 제어하는 아두이노 -.
마케팅전략수립 컨설팅 제안서 수행계획서 작성 이전 제안서.
김 형 진 전북대학교 IT응용시스템공학과 인터넷의 활용 Chapter 김 형 진 전북대학교 IT응용시스템공학과.
헤더 파싱 ( Header Parsing ).
문자 인코딩에 관하여 팀 E.E 강재문, 윤영호 백진후, 조남훈.
DataScience Lab. 박사과정 김희찬 (월)
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
21. 숫자가 만드는 문자, 문자 코드 문자 정보 문자 정보를 이진수로 표현하는 방법을 이해한다.
“정보의 표현” 이 점 숙 컴퓨터와 인터넷 “정보의 표현” 이 점 숙
“소프트웨어의 표현” 이 점 숙 컴퓨터와 소프트웨어 “소프트웨어의 표현” 이 점 숙
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
Java의 정석 제 2 장 변수(Variable) Java 정석 남궁성 강의
국립중앙의료원 Messenger Server
쿰란 쿰란 와디 항공촬영 .
인천공항 스카이 허브라운지 상세페이지  배송비 부분에서 B2B, B2C 두가지 버전이 필요하며,
연구책임자용 충남대학교 생명윤리위원회 홈페이지 연구 책임자&담당자 매뉴얼 Date version 1.0.
목차: 제2부 기하공차의 적용 제3장 단독형체에 적용하는 형상공차 ************ 2-2
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
Ⅰ. 보안환경.
문자코드 변환 콘코던서 형태소분석기 한국어 정보의 전산처리
자바 5.0 프로그래밍.
선천이상 (congenital anomalies)
(생각열기) 횡파와 종파를 구분하는 기준은 무엇인가?? 답 : 진동하는 방법의 차이
인코딩.
문자코드, 문자 입출력 한국어 정보의 전산 처리
성공적인 입사지원서 작성법 제이비커리어 교육수석 소 은 선.
제03장 정보의 표현.
실습과제 1번 배열 크기 : 8 문자열 길이 : 7 // MBCS 예제: 출력 결과 이해하기
윈도우에서의 유니코드.
2012년 9월 16일 바벨탑 사건과 셈의 후손들의 족보 ▣말씀:창세기 11:1-32 예 수 복 된 교 회.
회계 교육자료 재경부.
Presentation transcript:

1

2

최종 사용자. “ 이런 한글 깨지네.” Unicode 에 대해 전혀 모르는 개발자. UTF-8 을 쓰니 Unicode 완비되었다고 생각하는 사람. 세상에는 여러 종류의 인코딩이 존재하고 있다는 것을 아는 사람. UTF-8 이 곧 Unicode 가 아니라는 것을 아는 사람. Unicode 에 여러 평면이나 카테고리, 스크립트 등의 분류가 존재한다는 것을 알고 있다 유니코드 전문가 유니코드 이해의 다양한 단계들 by 홍민희의 블로그 3

멀티바이트 유니코드 UTF-8 BMP SBCS CP949 UTF-16 UCS2 Encoding UCS4 BOM i18n KSC5601 4

Character Set Encoding Codepage 문자의 집합. 문자에는 숫자 코드가 부여되는데, 캐릭터 셋이라 하면 컴퓨터 상에 어떻게 표현되는가 까지는 정해지지 않은 상태. 캐릭터 셋이 컴퓨터상에서 어떻게 표현되는지 까지 정해진 상태의 문자의 집합. EUC_KR, SHIFT_JIS … IBM 에서 쓰던 말. 인코딩과 같은 맥락. MS 에서 DOS 를 만들 때 IBM 과 같이 만들었는데 덕분에 MS 에서도 Codepage 라는 말을 많이 씀 5

Single Byte Character Set (SBCS) Wide Byte Character Set (WBCS) Multi Byte Character Set (MBCS) 예를 들면 1 바이트로 표현 가능한 ASCII 는 SBCS 모든 문자를 2 바이트로 표현하는 캐릭터 셋 가변 길이 캐릭터 셋. 상황에 따라 1 바이트 이상 사용. 6

ASCII 7 비트를 사용한 인코딩 33 개의 출력 불가능한 제어 문자들 95 개의 출력 가능한 문자들 7

Codepage 문자 인코딩을 위해 쓰이던 전통적인 IBM 용어 7bit 인 ASCII 에 1bit 더 붙여서 1Byte 를 다 사용함. 8

i18n l10n internationalization localization 9

i18n l10n 10

CP437 Original IBM Codepage CP860 포르투갈어 CP932 일본어 CP949 한국어 UTF-8 IBM CP1208 MS CP65001 SAP CP4110 = = = 너무 많아 !! 11

1991 년 10 월 i18n 을 위해 만들어짐. “ 이 세상의 모든 문자를 담자 ” UCS2 UCS4 일반적으로 사용. 모두 2byte 산스크리트어, 옛이집트고어 등등 포함. 12

BMP 0x0000 부터 0xFFFF 까지 BMP(Basic Multilingual Plane) 13

UCS 용 인코딩 방법으로 ISO 이 정의. 축약하여 UCS2. 각 글자들을 0~65535(0xFFFF) 에 매김. BMP 영역을 표현 가능. 한글 USC-2 영역 14

BMP 중 한글 각 0xAC01( ) 쀍 0xC00D( ) 15

UTF-8 UTF-16 1~3byte 를 사용하여 BMP 를 모두 표현 가능 BMP 를 표현하기 2byte 를 사용하여 BMP 를 모두 표현 가능 UTF-32 4byte 를 사용하여 BMP 를 모두 표현 가능 ? 16

Plane USC-4 영역 17

SMP SIP 0x10000~0x1FFFF 고대 script, 음악 및 수학 기호 BMP 외의 영역 Unassigned 그 외그 외 그 외그 외 0x30000~0xDFFFF Unassigned 0x20000~0x2FFFF CJK Unified Ideographs 0xE0000~ SSP, Private Use Area Planes 18

Scripts 스크립트의 분류 –099 Hieroglyphic and cuneiform scripts 100–199 Right-to-left alphabetic scripts 200–299 Left-to-right alphabetic scripts 300–399 Alphasyllabic scripts 400–499 Syllabic scripts 500–599 Ideographic scripts 600–699 Undeciphered scripts 700–799 Shorthands and other notations 800–899 (unassigned) 900–999 Private use, alias, special codes 000–099 Hieroglyphic and cuneiform scripts 100–199 Right-to-left alphabetic scripts 200–299 Left-to-right alphabetic scripts 300–399 Alphasyllabic scripts 400–499 Syllabic scripts 500–599 Ideographic scripts 600–699 Undeciphered scripts 700–799 Shorthands and other notations 800–899 (unassigned) 900–999 Private use, alias, special codes 19

1. 1 바이트로 표시된 문자의 최상의 비트는 항상 0 UTF 바이트 이상으로 표시된 문자의 경우, 첫 바이트의 상위 비트들이 그 문자를 표시하는 데 필요한 바이트 수를 결정한다. 예를 들어서 2 바이트는 110 으로 시작하고, 3 바이트는 1110 으로 시작 한다. 3. 첫 바이트가 아닌 나머지 바이트들은 상위 2 비트가 항상 10 이다. 4. 기존의 ASCII 로 짜여진 프로그램의 경우 UTF-8 을 사용하면 아무 문제 없이 동작 가능하다. 20

코드범위 UTF-16 표현 UTF-8 표현설명 ~00007F0xxxxxxxx0xxxxxxx ASCII 와 동일한 범위 ~0007FF 00000xxx xxxxxxxx 110xxxxx 10xxxxxx 첫바이트 110 또는 1110 로 시작 바이트 들은 10 으로 시작 ~00FFFFxxxxxxxx 1110xxxx 10xxxxxx 10xxxxxx 첫바이트 110 또는 1110 로 시작 바이트 들은 10 으로 시작 ~10FFFF yy yyxxxxxx xx xxxxxxxx 11110zzz 10zzxxxx 10xxxxxx 10xxxxxx UTF-16 서로게이트 쌍 영역 (yyyy = zzzzz - 1). UTF-8 로 표시된 비트 패턴은 실제 코드 포인트와 동일하다. UTF8 과 UTF16 으로 표현하기 21

000800~00FFFFxxxxxxxx 1110xxxx 10xxxxxx 10xxxxxx 첫바이트 110 또는 1110 로 시작 바이트 들은 10 으로 시작 ‘ 삼 ’ 을 UTF-8, 16 으로 어떻게 ? UTF-16 : 0xC0BC UTF-8 : 0xC0BC = = EB 82 BC 22

UTF-16 인코딩 예제 몇가지 Z(0x7A) : 0x007A : 0x1D11E = High-Surrogate : (0xD834) Low-Surrogate : (0xDD1E) 23 코드범위 UTF-16 표 현 ~00007F0xxxxxxxx ~0007FF 00000xxx xxxxxxxx ~00FFFFxxxxxxxx ~10FFFF ZZ ZZxxxxxx yy yyyyyyyy 0x 이상의 경우 | z z z z z | x x x x x x y y | y y y y y y y y 로 나타남. (ZZZZ = zzzzz - 1) 水 (0x6C34) : 0x6C34 zzzzz : ∴ ZZZZ : xxxxxx : yyyyyyyyyy : ∴ D834 DD1E High Surrogate Low Surrogate 높은 음자리표 (0x1D11E)

CP949 to Unicode 24

Unicode to CP

BOM 유니코드에서 엔디안을 구별하기 위해 사용 되는 문자. U+FEFF EncodingRepresentation UTF-8EF BB BF UTF-16 BEFE FF UTF-16 LEFF FE UTF-8 에서는 엔디안 문제가 일어나지 않으므로 BOM 을 넣을 필요가 없지만 해당 자료가 UTF-8 인코딩이라 는 표식으로 사용하는 경우도 있다. 마이크로소프트 윈도우의 많은 문서 편집기가 UTF-8 로 저장할 경우 자동으로 문서의 앞부분에 BOM 을 추가한 다. 따라서 BOM 을 인식하지 못하는 다른 문서 편집기 에서 윈도우에서 제작한 문서를 읽어 들일 때 잘못된 처 리를 하는 경우가 종종 있다. 26

응용 – 한글 초성 검색 알고리즘 구현 boolean matchString(String 검색대상, String 검색어 ); matchString(“ 삼성소프트웨어멤버십 ”, “ ㅅㅅ소프트웨ㅇㅁ ”); -> TRUE matchString(“ 삼성소프트웨어멤버십 ”, “ ㅅㅍㅌㅇㅇ ”); -> TRUE matchString(“ 삼성소프트웨어멤버십 ”, “ 소프트웨얼 ”); -> FALSE 27

초성 검색 알고리즘 – 메소드 boolean isInitialSound(char searchar) : searchar( 문자 ) 가 자음인지 검사한다. char getInitialSound(char c) : c( 문자 ) 의 자음을 얻는다. boolean isHangul(char c) : 해당 문자가 한글인지 검사. 28

초성 검색 알고리즘 29

초성 검색 알고리즘 30

초성 검색 알고리즘 31

초성 검색 알고리즘 32

33

개발하며 겪었던 애로사항들 1. 유니코드 인코딩을 한 DLL 을 멀티바이트 프로그램에서 사용하려 할 때 : 이유도 모르고 하루를 그냥 날림. 2. 멀티바이트 프로그램에서 일본어와 중국어를 지원하기 위해 한글 윈 도우에서 일본어와 중국어를 복사 붙여넣기 하였는데, 실제 일본 윈도 우와 중국 윈도우에서 글씨가 깨져서 꿿뜛긄쳸 같은 글씨로 나옴. : CP949 에도 어느 정도 일본어, 한문을 제공한다. 이게 마치 다른 언어 윈도우에서도 보여질 것 같지만 전혀 그렇지 않다. 3. 서로 다른 기종 간에 씨리얼 통신 등으로 한글 스트링을 보냈는데 리시브 한 곳에서 보니 한글이 다 깨져있는 경우 : 이 경우는 인코딩 도 생각해 볼 수 있고 Endian 문제도 생각해 볼 수 있다. 34

하고 싶은 말 1. 어 ? 한글이 깨졌네 ? 에서 세부 내용을 아는 프로그래머로 ! 2. 프로그램을 짤 때는 i18n 을 고려하여 설계하도록 하고, 사용 인코딩 은 웬만하면 유니코드로 하도록 한다. 요새 웬만한 플랫폼은 다중언어 환경을 제공하도록 여러 리소스를 사용할 수 있도록 지원한다. 3. 라이브러리가 지원한다고 그냥 갖다 쓰기보다는 내부적으로 어떻 게 돌아가는지 호기심을 갖고 살펴보면 좋을 것 같다. 35

멀티바이트 유니코드 UTF-8 BMP SBCS CP949 UTF-16 UCS2 Encoding UCS4 BOM i18n KSC

WHQL 인증 기사 892&outlink=1 터치스크린 제어장치 특허 취득 세계화 단계별 연습 : 유니 코드 사용 유니코드 공식 홈페이지 37

38

39