블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.github.io/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
반응형
문자 인코딩 (charater encoding)
컴퓨터는 Hello, World
와 같이 인간의 언어를 이해할 수 없음.
컴퓨터가 이해할 수 있는 언어는 2진수뿐이다보니, 위와 같은 인간의 언어를 이해 할 수 있도록 문자를 2진수로 변환하는 작업이 필요함
2진수와 문자를 1대1로 대응하는 규칙을 통해 문자를 처리하는데,
이러한 대응 규칙에는 ASCII
, EUC-KR
, UTF-8
, UTF-16
, UTF-32
등 여러개의 규칙이 존재함
- 예를들어, 아스키코드에서는 2진수
01000001
(10진수로 65)는 문자A
로 표현 됨
JAVA 예시 코드
int num = 65;
System.out.println(Integer.toBinaryString(num)); // 2진수
System.out.println((char) num); // 문자
1000001
A
글자가 깨지는 이유
처음에 컴퓨터가 생겼을때는 영어와 일부 특수문자만 지원했었음
다양한 국가에서 컴퓨터를 사용하게되면서, 나라마다 자기들만의 인코딩 방식(대응 규칙)을 만들어서 사용함
인코딩 방식이 다르다보니, EUC-KR
로 작성된 문자를 다른 인코딩 방식으로 읽으려고하니 문자가 깨지는 현상이 발생함
이러한 문제를 해결하기 위해, 모든 언어에 대해 인코딩 할 수 있는 규칙이 만들어짐
- 이 인코딩 방식이 유니코드(
Unicode
) - 유니코드 종류에는
UTF-8
,UTF-16
,UTF-32
가 있음
만약 개발 도중에 문자가 깨지는 현상이 발생한다면, 인코딩 문제인것으로 이해하고 올바른 인코딩 방식을 사용하면 됨
관련 글
2021/03/04 - [ETC] - 아스키 코드에 대해서 (ASCII)
2021/03/04 - [ETC] - EUC-KR(CP949)에 대해서
반응형
'ETC' 카테고리의 다른 글
Apache Thrift 란? node와 python으로 구현 (아파치 쓰리프트) (0) | 2021.07.20 |
---|---|
아스키 코드에 대해서 (ASCII) (0) | 2021.03.04 |
Ubuntu 20.04에 Zabbix 5.2 구축하기 (0) | 2021.02.22 |
Ubuntu에 JFrog OSS Artifactory 설치 (0) | 2021.02.21 |
Virtual Box에 Ubuntu 20.04 VM 생성하기 (0) | 2021.02.18 |