MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
Unicode100
1. Unicode v 1.0
박일
http://AnDStudy.com
http://parkpd.egloos.com
2.
3. 문자? 문자셋? 인코딩? 폰트?
문자는 대소문자 구별을 한다. 영어 문자는 52 개
Character Code : 문자를 표현하는 데이터값
A : 65, B : 66 in ASCII
문자셋(Character Set) : 하나의 언어권에서 사용하는 언어를 표현하기
위한 문자들의 집합
인코딩 : 문자셋과 Character Code 와의 mapping
ASCII 도 인코딩 방법의 하나
폰트 : glyphs 집합
일본어 : MS_Gothic, MS_Minch
중국어 : SimSun, PSimsun 폰트
glyphs(글리프) : 문자 표현
그림[도안] 표지, [건축]장식용 세로홈, [고고학] 그림 문자, 상형 문자
Times New Roman Bold A : A
Arial Bold A : A
4. ASCII
26x2(알파벳 대소문자) + 10(숫자) +
특수문자 + 통제문자 -> 128개 이하(2^7)
옛날 워드스타에서는 나머지 1 bit 를
제어용으로 사용
5. 서유럽으로 간 ASCII
움라우트 등을 표현하기 위해 7bit 에 1bit 추가 (2^8)
ASCII 확장 문자셋을 ISO 가 관리하게 됨
ISO/IEC 8859-1 라틴-1 서유럽
ISO/IEC 8859-2 라틴-2 중앙유럽 부터...
ISO/IEC 8859-16 라틴-10 남동유럽 까지
6. 일본으로 간 문자셋
1바이트로 일본어를 표현하기
글자가 둥글어 그리기 어려운 히라가나(あいうえお) 대신
카타가나(アイウエオ) 를 나머지 128 비트 공간에 넣자
영어와 크기를 같게 하기 위해 "반각(半角)문자, Half-Width
Katakana“ 사용
MBCS - Multi Byte Character Set 등장
최상위 비트가 0 이면 ASCII Code 로 해석
1 이면 2 바이트를 사용하는 일본어 문자셋을 찾는다
예 : 0xA1 0x72 0xA3 0x70 0x52 0xA2 0xA3
1 바이트가 0x00 ~ 0x7F (0~127)까지의 값이라면
ASCII 문자이다.
서유럽어는 0x80 ~ 0xA0 (예약범위)까지 (128 ~ 160)
공간을 동아시아 MBCS 를 위해서 비워놓았다.
7. 한국 문자셋 - 완성형과 조합형
완성형 : 완성형한글 2350자, 한자(4884개), 숫자,…
“강“ : 0xB0C1 (0xB000 + 0xC0 + 0x1)
조합형 : 초성"ㄱ"과 중성"ㅏ"를 조립한 “가” 는
0x1100,0x1161 로 나타낼 수도 있다.
초성 ‘ㄱ’ : 0x1100 HANGUL CHOSEONG KIYEOK
중성 ‘ㅏ’ : 0x1161 HANGUL JUNGSEON A
확장 1bit, 초성 5bit, 중성 5bit, 종성 5bit
8. EUC
Extened Unix Code(확장 유닉스 코드)
8비트 문자 인코딩 방식
ISO 2022 표준 기반
EUC-KR 은 KS X 1001, KS X 1003 사용
한글 완성형 인코딩
KS X 1003 는 역슬래쉬 대신 사용하는 것만 제외하면
ASCII 코드와 동일
KS X 1001 은 한글, 그림 문자, 한자 등을 포함
128보다 작은 바이트에 KS X 1003 배당
128보다 크거나 같은 바이트에 KS X 1001 배당
실제 사용공간이 상위바이트 161-254, 하위바이트 161-254
뿐이었기 때문에 ‘똠’이나 ‘뷁’ 같은 한글이 빠짐.
9. CP949
MS 가 KS X 1001 에 없는 한글 8822 자를
추가해 EUCKR 를 확장한 완성형 인코딩
ks_c_5601-1987
원래는 CodePage 번호였으나 지금은
EUCKR 의 확장형인 한글 인코딩 방식을
지칭하는 이름이 되었다
ks_c_5601-92 도 있는 듯
10. iso2022-kr 과 KPS-9566
iso2022-kr
EucKR 을 7bit 만 사용하며 표현하는 방식으로
RFC1557 에 정의
KPS-9566 : 북한 유일의 고유 문자셋
한글 모양은 우리보다 300글자 정도 많고
한자는 200글자 정도 적다
한글 시작이 ‘가’ 가 아닌 ‘김일성김정일’ 6 글자가
먼저 배치되어 있다고...
자음 정렬 순서
ㄱㄴㄷㄹㅁㅂㅅㅈㅊㅋㅌㅍㅎㄲㄸㅃㅆㅉㅇ
11. Code Page
정의 : OS 에서 선택한 character code 들을 특정한
순서로 정리해 놓은 목록(IBM, MS)
another name for character encoding(from wikipedia)
활성 코드 페이지 : 949 (완성형 확장)
한글 조합형 : Code Page 1361
영어 : ANSI-437
이스라엘 : ANSI-862
로케일 utf-8 : 65001
인코딩된 데이터를 어떻게 해석할 것인가
CHCP (change code page)
Code Page Identifiers
http://msdn.microsoft.com/en-us/library/dd317756
12. 문제점
다른 CodePage 에서 파일을 열면 글자가 깨져 보임
여러 나라의 문자셋을 같이 보여줄 수 없음
소프트웨어를 바이너리 하나로 여러 나라에 판매할 수 없음
DOS 시절 일본 게임 때문에 인코딩 바꿨다면 나중에 인코딩을
돌려놔야 했다
모든 문자별로 유일한 값을 할당하고 싶다
13. Unicode 시작
모든 문자별로 유일한 Character Code 를 지정하자
1984년 ISO(국제표준기구)는 ISO 10646 국제 표준 체결 ->
모든 문자를 4 바이트로
1993년 5월 그리스 아테네 회의 : 최종 확정
Unicode Working Group(1989년)
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,6
14. Unicode 구조
문자별로 번호(코드 포인트 Code Point) 지정
U+0041
U+ 는 Unicode
0041 : 코드 포인트 값으로 16 진수로 표기
U+0041 는 영어 알파벳 'A’
U+AC00 : 한글 '가‘
U+0000~U+00FF 영역은
ISO 8859-1 문자셋과 동일
한글은 U+AC00 ~ U+D7AF 영역에 정의
0x10FFFF^2 : 100만개 글자(10만개 사용)
15.
16. Unicode 체계
BMP (Basic multilingual Plane. 기본언어판)
최초 65536(2^16) 개의 문자 할당되는 영역.
Unicode 3.0 : 49,194 문자 정의
UCS-2 과 동일
특히 한문에서 필요문자가 늘어나면서
보충언어판(Supplementary Plaines)을 정의
Unicode 3.1 에서는 BMP 에 2개 문자 추가,
보충언어판에 44,944 개 문자 추가
음표,고대문자,한자(CJK Ideographic Extension B)
CJK : 한국, 중국, 일본
Unicode 3.1 : 49,194 + 44,944 = 94,140
17. UCS 체계
Cell : 한 개의 문자가 할당되는 공간
Plane : 256 * 256개의 cell 묶음
65536(0xFFFF) 개 -> UCS-2
BMP : Plain 00
Group : 256 개의 Plane 묶음(7F 개)
18. 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비트 공간 사용
20. UTF-32
모든 문자를 코드 포인트 값 유지하면서
32 비트로 만든다. (고정길이)
linux의 경우 wchar_t 의 크기가 32bit 라서
mbstowcs()를 이용해서 변환 후 고정길이
인코딩처럼 wcs함수를 사용하면 된다.
UCS-4 의 부분집합(17 개의 언어판만 정의)
21. UTF-16
BMP 영역 안(U+0000-U+FFFF)의 문자는 그대로
표현, 밖의 문자는 변환 필요 (가변길이)
Windows 2000 과 이후 버전은 UTF-16 기반. 이전
NT 커널은 UCS-2 기반
Java 2/Java 5는 UCS2/UTF-16에 의존
UCS-2 보다 확장된 개념
23. UTF-8
'A’ : U+0041 같은 UTF-16 를 char 로 읽으면 00
(null) 문자열 때문에 기존 함수가 오작동
<html>
<head>
<meta http-equiv=“Content-Type”
content=“text/html;charset=utf-8”>
Charset 까지는 ascii 로 읽고 charset 읽은 후에 인
코딩에 맞춰서 파싱 시작. 그러니 charset 이전에
unicode 인코딩 글자가 들어가면 안 됨
웹의 실질적 표준, 많은 *nix 시스템, xml, python 은
UTF-8 을 가장 기초적인 인코딩으로 사용
글자 길이를 알려면 전체 글을 파싱해야 함
24.
25. 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
28. UTF-16 문자 개수 구하기
code snippet http://dodoubt.tistory.com/40 참고
29. 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≫¿ 로 출력할 수 있다.
30. Font
문자 -> 유니코드 -> 유니코드 인코딩 -> 화면 그리기
유니코드 폰트
Arial Unicode MS(ARIALUNI.TTF, 22,730KB)
함초롱체, 한컴 바탕 : http://maplestory.pe.kr/1785
고정길이 폰트(Monospace Font)
굴림체, 바탕체, 돋움체
가변길이 폰트
굴림, 바탕, 돋움
상관없지만
나눔고딕 코딩글꼴
http://dev.naver.com/projects/nanumfont/download
Bitstream Vera Sans Mono + 맑은고딕
http://ggotbo.egloos.com/2334938
31. Console 에서의 폰트
[HKEY_CURRENT_USERConsole
%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:000001b5
"FontSize"=dword:000c0000
"FontFamily"=dword:00000036
"FontWeight"=dword:00000190
"FaceName"=" 굴림체“
명령 창에서 사용할 수 있도록 글꼴에 대해 필요한 조건
fixed-pitch font, not italic font,
no negative A or C space
if (TrueType) FF_MODERN else OEM_CHARSET
http://support.microsoft.com/kb/Q247815
명령 프롬프트 디폴트 폰트 바꾸는 법
http://pcwinvista.tistory.com/340
http://dodoubt.tistory.com/34
34. 인코딩
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 는 인코딩 방법이지
인코딩이 아님
35. Reference
Unicode 의 이해 – novo networks
http://www.novonetworks.com/jamestic/Unicode_1.0.pdf
진숙의 유니코드 입문서
http://www.kristalinfo.com/K-Lab/unicode/Unicode_intro-kr.html
MBCS 와 유니코드
http://www.animalpicturesarchive.com/jinsuk-kim/diary/read.php?2006/0203
위키백과 – 유니코드, 유니코드 범위 목록
Unicode 5.2 Character Code Charts
http://www.unicode.org/charts/
조엘 온 소프트웨어 : 유니코드와 문자집합에 대한 고찰
http://www.joelonsoftware.com/articles/Unicode.html
Character sets and codepages
http://www.microsoft.com/typography/unicode/cscp.htm
http://www.microsoft.com/typography/unicode/1250.gif
한글 코드 페이지 http://www.unicode.org/charts/PDF/UAC00.pdf
KS C 5601 완성형 코드
http://zbxe.bluegate.kr/42
http://whatisthat.co.kr/6
36. Reference
http://jof4002.net/Unicode
VC++ : 유니코드를 표준 출력에 내보내기
http://kaistizen.net/EE/index.php/weblog/comments/unicode_hangul_to_stdout/
IdeA thinKING - C file’s orientation
http://ideathinking.com/blog/?p=108
http://ideathinking.com/blog/?p=109
rein : 인코딩과 문자집합: Unicode
http://rein.kr/blog/archives/280
rein : Windows Character Encoding: UCS2? UTF-16?
http://rein.kr/blog/archives/585
STL string 사용시 wstring 일때, 출력이 되지 않습니다.
http://kldp.org/node/93573
http://en.wikipedia.org/wiki/Code_page
http://gpgstudy.com/gpgiki/윈도우 다국어 프로그래밍
MBCS 와 UNICODE FAQ 정리
http://mynotepad.tistory.com/67
37. 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
window command prompt(cmd.exe)에서 사용하는 font 추가 및 변경하기
http://dodoubt.tistory.com/34
ASCII and Unicode quotation marks by Markus Kuhn
http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
유니 코드 (구원의 여신의 등장?) - 박우영
http://web.edunet4u.net/~han0416/%ED%95%98%EB%93%9C%EC%9B%A8%EC%96%B4%20%
EA%B0%95%EC%A2%8C/chapter2/uni_code.htm
Code2001, a Plane 1 Unicode-based Font
http://www.code2000.net/code2001.htm
wprintf/wcout and unicode characters in VS2005
http://blog.kalmbachnet.de/?postid=98
38. Reference
David Myriad Rosenbaum's Font Sanctuary (Ugaritic Font)
http://davidmyriad.tripod.com/myriads.font.page.html
http://www.alanwood.net/unicode/fonts-middle-eastern.html#ugaritic
외국어 지원을 위한 Unicode 활용 방법
http://www.ibm.com/developerworks/kr/library/l-linuni.html
ASCII Table
http://www.asciitable.com/
심심할때 읽어보는 문자셋, 인코딩 이야기
http://blog.daum.net/_blog/tagArticleList.do?blogid=0Idq4&tagName=%EB%A
C%B8%EC%9E%90%EC%85%8B#ajax_history_home
한글 인코딩 이야기 - (1) ASCII, 완성형, 조합형, EUCKR, CP949
http://heyjimin.tistory.com/14
한글 인코딩 이야기 - (2) 유니코드, UCS-2, UTF-8, UTF-16
http://heyjimin.tistory.com/15
http://namoda.springnote.com/pages/2017552
유니코드 볼 수 있는 에디터? KORAIS
http://korais.sourceforge.net/screenshots.html