문자코드 조사 정리 불우이웃 조.

Slides:



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

프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
1/29 키보드로 직접 입력할 수 없는 다양한 기호와 한자를 입력하는 방법을 알아 보자. 또한 블록으로 영역을 설정하는 여러 가지 방법에 대해 살펴본 후 블록 으로 설정된 내용을 복사하여 붙여넣거나, 잘라내고 이동하는 방법에 대해서 도 알아보자. 02_ 문서의 입력과 편집.
Chapter 04 컴퓨터에서 데이터 표현. 04 컴퓨터에서 데이터 표현 2 인코딩 (encoding) – 현실세계의 정보를 컴퓨터 내부에서 처리할 수 있는 이진수로 변환하는 방법 1. 컴퓨터 속에서 데이터 표현 원리 0 - 아빠 1 - 엄마 00 - 아빠 01 - 엄마.
자료의 표현 1. 문자 자료의 표현 2. 멀티미디어 자료의 표현. 컴퓨터일반자료의 표현 학습 목표 ◆ 컴퓨터에서 사용하는 문자 데이터의 표현 방법을 이해할 수 있다. ◆ 컴퓨터에서 사용하는 멀티미디어 데 이터의 표현 방법을 설명할 수 있다.
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
Ⅱ. 정보의 표현과 관리. Ⅱ. 정보의 표현과 관리 2. 자료의 표현과 연산 1. 정보와 자료 구조.
문자코드 1 박 2 일 (4 조 ) 이경도 이준집 이수연 엄태규. 문자코드란 ? 문자나 기호를 컴퓨터로 다루기 위하여, 문자나 기호 하나하나에 할당 시키는 고유의 숫자를 말하는 것이다.
조원 : 김영재(코딩) 이지영(스토리) 임병욱(그래픽)
재료수치해석 HW # 박재혁.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
연결리스트(linked list).
제 9 장 구조체와 공용체.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
데이터의 표현 컴퓨터 속에서 데이터 표현 원리 디지털 논리회로에 기반한 컴퓨터는 두 가지 상태만을 구별
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
오브젝트 조합 회로 IT CookBook, VHDL을 이용한 디지털 회로 입문.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Error Detection and Correction
멀티미디어 시스템 (아날로그 이미지,신호를 디지털로 변환 방법) 이름 : 김대진 학번 :
UTF ENCODING (UTF-8,16,32) 발표자 - 김규호.
학습목표 학습목차 다른 홈페이지의 HTML 파일 코드를 보는 방법에 대해 알아봅니다.
6장. printf와 scanf 함수에 대한 고찰
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
Chapter 03 디지털 코드.
11장. 1차원 배열.
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
JA A V W. 03.
프로그래밍 개요
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
☆ASCII☆ 김연주.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
연산자 (Operator).
문자코드ppt.
USN(Ubiquitous Sensor Network)
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
6강. 객체지향 프로그램의 시작 객체지향 이전의 프로그래밍 객체지향의 등장 배경과 이해 메소드의 이해
1. 2진 시스템.
3강. 컴퓨터와의 기본적인 소통수단 - I 연산자란? 컴퓨터와 소통하기 위한 다양한 방법들
CHAPTER 02. 정보의 표현 정보 체계_컴퓨터 내부의 정보 표현과 정보 처리
Choi Seong Yun 컴퓨터 프로그래밍 기초 #03 : 변수와 자료형 Choi Seong Yun
정보의 표현 정보 체계_컴퓨터 내부의 정보 표현과 정보 처리
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
문자코드조사 -8조스토어 ●정성모 ●김대의 ●장인혁.
Canary value 스택 가드(Stack Guard).
회로해석 및 논리회로실험 (정승기 교수님, 김신아 조교님)
5 함수.
약식 진리표를 이용한 타당성 증명 진리표 그리기 방법의 한계
제 15 강 문자와 코드 shcho.pe.kr.
Excel 일차 강사 : 박영민.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
리더 : 이동주 스토리 : 김현 그래픽 : 최혁진 코딩 : 최재근
Chapter 10 데이터 검색1.
함수, 모듈.
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
9 브라우저 객체 모델.
8장 선택 논리 II 1. 논리연산자 1.1 논리연산자 : AND (&&) 1.2 논리연산자 : OR (||)
제 4 장 Record.
1. 지역변수와 전역변수 2. auto, register 3. static,extern 4. 도움말 사용법
어서와 C언어는 처음이지 제21장.
 6장. SQL 쿼리.
윈도우에서의 유니코드.
7 생성자 함수.
6 객체.
Presentation transcript:

문자코드 조사 정리 불우이웃 조

1. 코드(Code) 어떤 대상을 간략하게 표시하기 위한 일종의 약속. 우편 번호, 주민등록번호, 학번, 군번 등이 코드의 예이며 문자 코드도 많은 코드 중 하나다

2. 문자 코드(charset-coded character set) ①단일 문자의 내부 표현을 나타내는 코드로 컴퓨터에서 문자를 표현하기 위해, 각 문자를 정수값에 대응시켜 놓은 일종의 대응표 ②컴퓨터는 숫자만, 그것도 이진수만 다룰 수 있는 존재이고 무나를 직접 다룰 수 없기 대문에 문자를 표현하기 위해서는 개별 문자를 고유의 숫자값에 대응시켜 야만 한다. ③문자와 숫자의 대응 관계를 정의한 체계이며 대응시키는 방법에 따라 여러 가지 종류가 있다.

ex) 1. euc-kr charset이라면, 영숫자와 한글 그리고 일부 특수문자와 한자들을 정수값에 대응해 놓은 것. 2.euc-kr환경에서 한글을 입력하면, 컴퓨터는 euc-kr charset에서 각 문자별로 지정한 정수값을 쓰게 된다. ④종류 -ASCII 코드: American Standard Code for information interchange의 약자 미국에서 표준화가 추진된 정보교환용 7비트 부호로 PC를 중심으로 국제적으로 사용 가장 흔하고 오래된 문자 코드 -표준 BCD코드: Binary-Coded Decimal Code의 약자. 숫자,영자,특수 기호를 나타내기 위한 6비트 + 오류 검사용 1비트로 전체 7비트로 구성.

-EBCDIC코드: Extended Binary Coded Decimal Interchange Code의 -EBCDIC코드: Extended Binary Coded Decimal Interchange Code의 약자, 8비트의 조합에서 1자를 표현하는 부호체계. 이 8비트를 1비트라 하며 1바이트로 영자(A-Z), 숫자(0~9), 특수기호 등 256종의 문자를 표현할 수 있다. 특히 숫자는 4비트를 사용하여 16진법으로 표현 -유니코드: 컴퓨터에서 세계 각국의 언어를 통일된 방법으로 표현할 수 있게 제안된 국제적인 문자 코드 규약 -한글코드: 컴퓨터 내부에서 한글을 표시하기 위해 사용되는 코드로 서 행망 표준 코드인 2바이트 완성형 외에도 2바이트 조합 형, n바이트형, 3바이트형 등이 있다.

3. 문자 인코딩(인코딩) ①문자를 표현하는 정수값을 어떤 bit배열로 표현할 것 문자 인코딩을 통해 부호화되어, 복호화하면 본래의 문자나 기호를 뜻하게 되는 부 호를 문자 코드라 한다. ex) 모스 부호: 전건을 길게, 또는 짧게 두드려서 라틴 알파벳을 나타내는 방법 아스키: 라틴 알파벳, 숫자, 특수 문자 등을 정수와 그에 대응되는 7비트 이진수로 표현하는 방법

②대부분의 경우 charset과 encoding을 구별할 필요가 없다. 정수값을 bit배열로 표현하는 방법은 하나있기 때문이다 ②대부분의 경우 charset과 encoding을 구별할 필요가 없다. 정수값을 bit배열로 표현하는 방법은 하나있기 때문이다. 그러나 unicode 경우에는 UTF-8, UTF-16 같이 몇 가지 다른 인코딩을 사용한다. 문자코드가 같다면, 그 문자코드를 지원하는 어떤 인코딩을 사용하든지, 각 문자에 대응하는 논리적인 정수값은 동일하지만, 실제로 기록되는 bit배열은 인코딩에 따라 달라질 수 있다. 이 경우, 제대로 데이터를 주고받으려면 문자코드 뿐 아니라 인코딩까지도 맞춰야한다. ③문자 집합은 ASCII와 같이 더 이상의 문자가 추가될 수 없기도 하고, 유니코드와 같이 문자가 계속 추가될 수 있기도 하다. 일반적으로 문자 집합과 문자 인코딩은 어떤 문자를 사용할 수 있으며 어떤 식으로 표현되는지를 나타낸다는 데서 동의어로 취급되기도 한다. 역사적인 이유로 MIME이나 그에 기반한 시스템은 문자 집합을 문자 인코딩을 나타내는 데 사용한다.

-문자 인코딩 형태: 유니코드 코드 포인트를 8비트 숫자의 집합으로 나타내는 UTF-8이나, 16비트 숫자의 집합으로 나타내는 UTF-16, 그리고 대부분의 일반적인 문자 인코딩들이 포함된다. -문자 인코딩의 구성 문자 인코딩 형태로 변환된 코드값을 옥텟 기반의 시스템에서 사용하기 위하여 옥텟들으로 변환하는 방법이다. 대부분의 문자 인코딩 형태는 이 과정에서 아무런 일도 일어나지 않으며, 8비트 이상의 숫자를 사용하는 UTF-16과 같은 문자 인코딩 형태의 경우 엔디안을 지정해 주는 것으로 충분하다. 여기에는 ISO 2022와 같은 복합 인코딩이나, SCSU와 같은 압축 방법 등이 속한다.

7비트 크기로 영문자와 숫자, 기호들을 대응시킨 아스키(ASCII) 코드이며 지금도 많이 사용될 뿐만 아니라 이후 확장된 문자 코드들도 아스키를 기반으로 한다. 윈도우즈의 유저, GDI 모듈이 사용하는 ANSI 문자셋과 FAT 파일 시스템이 사용하는 OEM 문자셋도 아스키 문자셋에 기반하되 0x80이후의 문자가 약간 다르게 정의되어 있다. 아스키 문자셋이나 ANSI문자 셋처럼 한 바이트로 한 문자를 표현하는 문자 코드를 SBCS(Single Byte Character Set)라고 한다. 바이트 단위이기 때문에 최대256개의 문자를 표현할 수 있다. 그러나 이 코드는 애초에 미국의 문자에만 맞게 작성되었기 때문에 독일어나 불어 등의 특별한 기호를 가진 문자를 표현하기에 부족했으며 더구나 알파벳과 모양이 완전히 다른 그리스나 러시아의 문자는 전혀 표현할 수가 없었다. 그래서 아스키 코드를 확장한 확장 아스키 코드를 정의하고 같은 코드에 이중으로 문자를 할당할 수 있는 방식인 코드 페이지로 새로운 문자들을 표현하고자 노력했으나 근본적인 해결방법이 되지 못했다. 왜냐하면 특정 코드 페이지에서 작성한 문서를 다른 코드 페이지에서 읽을 수 없어 문서 교환이 어려운 난점이 있기 때문이다.

또한 서양 국가들의 문자는 대부분 8비트 범위 내에서 표현할 수 있지만 한국, 중국, ㅇ리본 동양 3국(CJK라고 한다)의 문자는 그 보다 문자수가 훨씬 더 많으므로 한 바이트로 모든 문자를 표현할 수가 없다. 그래서 동양 3국은 문자 하나를 표현하기 위해 2바이트를 사용하는 DBCSD(Double Byte Character Set) 체계를 사용해 왔으며 이 체계는 현재까지도 계속 사용되고 있다. 우리가 현재 사용하고 있는 DBCS는 영문, 기호는 8비트로 표현하고 한글은 16비트로 표현하는 ANSI의 확장형 문자 코드이다. SBCS와 DBCS가 섞여서 존재하며 때로는 16비트를 넘을 수도 있기 때무눈에 MBCS(Multi Byte Character Set)라고 한다. "럭키Seoul"이라는 문자열은 메모리 상에 다음과 같이 표현된다.

Ex) --------------------------------------------------------------- 럭 키 S e o u l \0 (2byte)(2byte) 한글은 2바이트를 차지하며 영문은 1바이트만 차지한다. 한 문자의 길이가 일정하지 않기 때문에 바이트 길이만으로 문자의 개수를 정확하게 알 수 없는 문제가 있는데 "럭키Seoul"이라는 문자열은 모두 7개의 문자로 이루어져 있지만 배열의 크기는 9바이트(널을 제외하고)이다. 문자열중에 2바이트 짜리 문자가 몇 개나 있는지 처음부터 순서대로 세어 와야만 문자 개수를 정확하게 알 수 있다. 똑같은 길이라도 문자열을 구성하는 문자에 따라 개수가 달라지는 것이다.

또한 문자열 중간에서 바로 앞 문자를 구하고 싶을 때도 일반적인 방법으로는 구할 수 어벖으며 반드시 선두에서부터 문자를 하나씩 읽어와야만 한다. 왜냐하면 중간 위치가 문자의 선두인지 2바이트 문자의 뒷부분인지를 정확하게 알 수 없기 때문이다. 각 바이트가 2바이트짜리 문자인지 아닌지는 IsDBCSLeadByte 함수로 조사할 수 있는데 버퍼 처음부터 이 함수로 각 문자의 길이만큼 이동해야 한다. DBCS문자열의 앞 뒤 분자를 구할 때는 CharPrev, CharNext라는 함수를 사용할 수도 있으나 CharPrev 함수의 경우 속도가 굉장히 느리고 비효율적이다. 길이와 앞문자를 구하기의 비효율성보다 더 큰 문제가 있는데 DBCS는 각 코드 페이지에 따라 실제로 맵핑되어 있는 문자가 달라질 수 있어 국제적인 범용 프로그램 제작에는 부적당하다는 것이다.

"럭키Seoul"이 한글 윈도우즈에서는 그대로 보이지만 중국어 윈도우나 일본어 위닌도우에서는 한글 코드 영역에 히라가나, 또는 한자 코드가 맵핑되어 있으므로 이대로 보일 리가 없다. 마찬가지로 우리가 일본 웹 사이트에 접속하거나 중국어 문서를 읽을 때도 제대로 보이지 않고 엉뚱한 한글이 보인다. 외국 문서가 정확하게 출력되려면 코드 페이지를 정확하게 선택해야 하는 불편함이 있다. 그나마도 코드 페이지란 특정 국가의 코드에 무나를 강제로 맞추는 것이기 때문에 여러 나라의 언어를 동시에 표현하고자 할 때는 전혀 도움이 되지 못한다. 예를 들어 한글로 된 일본어 교본이라든가 한중일 문자를 비교하는 논문을 작성할 대는 동시 표현을 할 방법이 없는 것이다.