💡인코딩 (Encoding)
인코딩은 문자 코드(자바 데이터)를 부호화(1,0)하는 작업으로, 이때 부호화란 1과 0으로 바꾸는 작업을 의미한다.
부호화를 예로 들면 자바 프로그램에서 "홍길동"을 저장하려고 할 때, 텍스트 파일을 '100110111010'과 같은 숫자 형태로 저장하는 것이다.
💡디코딩 (Decoding)
디코딩은 부호화 데이터를 문자 코드로 변환하는 작업, 즉 1과 0으로 된 데이터를 읽어서 우리가 쓰는 형태의 데이터로 바꾸는 작업을 한다.
💡인코딩 / 디코딩 규칙
문자를 1과 0로 바꾸려면 어떤 문자를 1과 0으로 바꿀 건지 규칙을 만들어야 하는데, 국가마다 쓰는 표현이나 관계들이 복잡하게 얽혀있다 보니 많은 규칙이 만들어지게 되었다.
규칙의 특징에 있어서 주목해야 하는 정보는 byte 수인데, 국제 표준으로 사용하기로 통일한 규칙은 UTF-8이므로 현재는 데이터가 깨지는 경우가 많이 사라졌다.
저장할 때 방식하고 읽을 때 방식이 서로 어긋날 때, 바이트 수가 달라지면 데이터가 깨져보이는 현상이 발생할 수 있으므로 주의하도록 한다. 이때 보이는 문자가 저장된 문자와 다르더라도 읽는 방식이 다른 것일 뿐, 데이터가 달라진 것은 아니다.
대표적인 인코딩 / 디코딩 규칙
- ISO-8859-1
- EUC-KR
- ANSI
- MS949 (CP949)
- UTF-8 (Unicode)
- UTF-16 (Unicode)
- ASCII
ANSI (ISO-8859-1, EUC-KR, MS949)
1. 영어(숫자, 특수문자, 서유럽어): 1byte
2. 한글(한자, 일본어 등): 2byte
'A'가 10만개 있는 [ANSI]영어.txt파일을 ANSI로 인코딩하자 크기가 100,000 바이트이고, '가'가 10만개 있는 [ANSI]한글.txt파일을 ANSI로 인코딩하자 크기가 200,000 바이트인 것을 확인할 수 있다.
UTF-8 (Unicode)
1. 영어: 1byte
2. 한글: 3byte
UTF-16 (Unicode)
1. 영어: 2byte
2. 한글: 2byte