문자
정의
컴퓨팅 분야에서 “문자”(英: character)는 인간이 인식하고 사용하는 글자, 기호, 숫자, 공백 등과 같은 최소 단위의 텍스트 요소를 의미한다. 문자 하나는 화면에 표시되거나 저장 매체에 기록될 수 있는 독립적인 정보 단위이며, 일반적으로 문자 코드는 문자와 이진 데이터 사이의 매핑을 담당한다.
주요 개념
| 구분 | 내용 |
|---|---|
| 문자 집합 (Character Set) | 특정 문자 집합은 일정 범위의 문자를 정의한다. 예를 들어, ASCII(7비트), ISO‑8859‑1(라틴‑1), EUC‑KR(한국어), UTF‑8/UTF‑16/UTF‑32(유니코드) 등이 있다. |
| 인코딩 (Encoding) | 문자 집합에 정의된 각 문자를 이진값(바이트)으로 변환하는 방식을 말한다. 인코딩 방식에 따라 동일한 문자라도 저장 형태가 달라질 수 있다. |
| 유니코드 (Unicode) | 전 세계 문자·기호·표현을 통합적으로 지정한 국제 표준이다. U+AC00 같은 코드 포인트를 통해 한글 음절을 포함한 모든 문자를 고유하게 식별한다. UTF‑8, UTF‑16 등은 유니코드를 구현한 대표적인 인코딩이다. |
| 문자열 (String) | 연속된 문자들의 시퀀스로, 프로그래밍 언어에서 텍스트 데이터를 다룰 때 기본 자료형으로 사용된다. 문자열은 길이와 문자 인덱스를 통해 개별 문자에 접근한다. |
| 문자열 처리 | 문자열 비교, 검색, 분할, 결합, 정규식 매칭 등 다양한 연산이 포함된다. 언어마다 문자열 API와 내부 구현이 다를 수 있다(예: C의 char*, Java의 String, Python의 str). |
컴퓨팅에서의 활용 사례
- 입력·출력: 키보드, 터치스크린, 음성 인식 등으로 사용자가 입력한 문자를 화면이나 프린터 등 출력 장치에 표시한다.
- 데이터 저장: 파일 시스템, 데이터베이스, 네트워크 전송 등에서 텍스트 데이터는 문자 인코딩에 따라 바이트 스트림으로 저장·전송된다.
- 국제화·현지화 (I18N/L10N): 다양한 언어·문화권 사용자를 지원하기 위해 유니코드 기반의 문자 집합과 다국어 인코딩이 필수적이다.
- 프로그래밍 언어: 대부분의 현대 언어는 문자열 리터럴 및 문자 타입을 제공하며, 문자 연산을 위한 표준 라이브러리를 포함한다.
역사적 배경
- 1960년대: ASCII가 영문 기반 최초의 표준 문자 집합으로 제정.
- 1980~1990년대: 지역별 문자 집합(EUC‑KR, Shift_JIS 등)이 등장하면서 다국어 지원이 확대.
- 1991년: Unicode Consortium 설립, 1993년 Unicode 1.0 발표.
- 1990년대 후반~현재: UTF‑8이 웹·모바일 분야에서 사실상 표준 인코딩으로 자리매김.
관련 용어
- 코드 포인트 (Code Point): 유니코드 표준에서 각 문자에 할당된 고유 번호.
- 바이트 순서 표시 (BOM, Byte Order Mark): UTF‑16·UTF‑32 등에서 엔디안 정보를 나타내기 위한 특수 문자.
- 멀티바이트 문자 (Multibyte Character): 한 문자당 여러 바이트를 사용해 표현되는 경우(예: UTF‑8).
- 고정폭 문자 (Fixed‑width Character): 한 문자당 동일한 바이트 수를 차지하는 인코딩(예: UTF‑32).
참고
- Unicode Consortium, The Unicode Standard, 최신 버전.
- ISO/IEC 8859 표준 시리즈.
- 다양한 프로그래밍 언어 공식 문서(예: Python
str, JavaString, C++std::string).