====== 문자 ====== * 문자 / character / character set / charset / text encoding * [[programming:unicode|Unicode]] * [[java:charset|Java Charset / Character encoding]] ===== Charset 과 Char Encoding 의 차이는 무엇인가? ===== * 문자표(character set)과 문자 인코딩(Character Encoding)은 매우 혼란스럽게 쓰인다. * character set 은 세상에서 쓰이는 문자와 기호들의 목록일 뿐이며 이것들은 **Code Point**라고 불리우는 어떤 숫자값으로 매핑돼 있다. * encoding 은 code point 를 어떻게 byte 로 표현하느냐의 문제이다. * 유니코드는 (거의) 전 세계의 모든 문자에 번호를 부여한 문자표(Character Set) 이다. * 하지만 유니코드는 여러가지 인코딩(Character Encoding) 방식으로 표현될 수 있다. ''UTF-8'', ''UTF-16'', ''UTF-32'' 등. * 하나의 Unicode 문자(code point)를 ''UTF-8'', ''UTF-16'', ''UTF-32'' 는 서로 다른 byte 들로 표현한다. * see [[programming:unicode|Unicode]] * **문제는 현재 아주 많은 분야에서 문자셋과 인코딩을 혼란스러워하고 있다. 대부분의 경우 ''charset''을 지정하라고 할 때 문자셋인 아닌 character encoding 을 지정해야 할 것이다.** ===== 과거의 한글 ''euc-kr'', ''cp949'' 등은 무엇인가? ===== * ''euc-kr''과 ''cp949'' 등은 **encoding**이다. * 2바이트 완성형 문자셋(한글 2,350글자만 가능)인 ''KS C 5601''(추후 ''KS X 1001'' 로 바뀜), ''KC C 5636''(추후 ''KS X 1003''으로 바뀜, KS C 5601과 거의 같으나 역슬래시가 원화 기호로만 대체된 버전)를 표현하는 방법이 ''euc-kr'' 인코딩이다. * Microsoft가 독자적으로 제정한 문자집합 확장완성형(통합형 한글 코드, Unifide Hangul Code) 문자셋(현대 한글 모두 포함하고 있음)이 있고 이를 표현하는 방법인 ''cp949/ms949''가 인코딩이다. ===== 참조 ===== * [[https://d2.naver.com/helloworld/19187|한글 인코딩의 이해 1편: 한글 인코딩의 역사와 유니코드]] * [[https://d2.naver.com/helloworld/76650|한글 인코딩의 이해 2편: 유니코드와 Java를 이용한 한글 처리]] * [[https://oursmalljoy.com/charset-encoding/|문자셋과 인코딩의 차이점은 문자집합과 이진법 맵핑 ⋆ Our Small Joy]]