문자 인코딩

sungs·2025년 8월 1일

자바

목록 보기
53/95

문자 인코딩

컴퓨터가 문자를 읽을 수 있도록 각 문자를 숫자로 변환시킨다.
컴퓨터는 2진수만 받아들이므로 문자를 10진수로 변환해 저장한다.
여기서 문자 집한이란 걸 통해 문자를 10진수의 수로 바꾸는데, 문자 집한에는 여러 가지가 있다.

참고로 숫자를 다시 문자로 바꾸는 건 디코딩이다.

종류

  • ASCII 문자 집합: 표준 문자 집합. 1960년대에 만들어져 7비트를 사용하여 128가지 문자를 표현한다.
  • ISO_8859_1: 서유럽을 기준으로 만든 문자 집합. 기존 ASCII에다 1비트를 더해 추가된 문자를 표현한다. 그래서 총 8비트다.
  • EUC-KR: 초창기 등장한 한글 문자 집합. 자주 사용하는 한글 위주로 2바이트, 즉 16비트를 사용하여 한글을 표현한다. 정확히는 기존 ASCII는 1비트, 한글은 2비트를 사용한다.
  • MS949: 마이크로소프트가 EUC-KR을 확장하여 만들었다. EUC-KR에서는 사용하지 못했던 한글 표현들은 사용하게 해준다.
  • UTF-16: 각 나라로 흩어져 있던 통합한 단일 문자 집합인 유니코드다. 16비트 기반으로, 자주 자용하는 언어는 2비트, 그 외는 4비트로 표현한다. 여기서 문제는 ASCII 영문도 2비트로 표현된다는 것이다. 그로 인해 기존에 1비트로 사용됐던 ASCII와 호환이 안 된다. 다만, 계산은 편리하다.
  • UTF-8: 8비트 기반의 유니코드다. 언어별로 1~4비트로 나눠서 표현한다. ASCII 영문을 1비트로 편하기 떄문에 호환이 된다. 다만 일부 언어는 기본보다 메모리 사용량이 많아졌다는 단점이 존재한다. 그렇지만 현재 대부분의 표준 인코딩 기술로 사용된다.

인코딩 관련 메서드

Charset.availableCharsets()

이용가능한 모든 문자 집합을 조회할 수 있다. 자바가 기본으로 제공하는 문자 집합과 OS가 제공하는 문자 집합을 포함한다.

Charset.forName()

특정 문자 집합을 조회할 수 있다. 대소문자를 구별하지 않는다.
별칭으로 찾으려면 aliases() 메서드를 사용하면 구할 수 있다.

StandardCharsets.문자 집합

자주 사용되는 문자 집합을 꺼낸 사용할 수 있다.

Charset.defaultCharset()

현재 시스템에서 사용하는 기본 문자 집합을 반환한다.

String.getBytes(Charset)

이 메서드를 이용해 String 문자를 byte로 바꿀 수 있다. 이때 어떤 문자 집합으로 바꿀지 Charset 객체에 넣어주면 된다.
A -> [UTF-8] 인코딩 -> [65] 1byte 변환하면 이런 형식으로 인코딩할 수 있다.

profile
앱 개발 공부 중

0개의 댓글