DEVELOPMENT/JAVA

β˜• 인코딩(Encoding)μ΄λž€? 인코딩 κ°œλ…κ³Ό μ’…λ₯˜(ASCII, ISO/IEC, EUC-KR, MS949, UTF-8)

Junesker 2025. 4. 3. 08:38
λ°˜μ‘ν˜•

 

μš°λ¦¬κ°€ 이클립슀λ₯Ό μ„€μ •ν•˜κ±°λ‚˜ μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμ„ ν•˜κ±°λ‚˜ 데이터λ₯Ό μ „μ†‘ν•˜κ±°λ‚˜ λ“±λ“± μ—¬λŸ¬κ°€μ§€ ν–‰μœ„μ—μ„œ μΈμ½”λ”©μ΄λΌλŠ” κ°œλ…κ³Ό μ‚¬μš©μ΄ 생각보닀 λ§Žλ‹€. κ·Έλ ‡μ§€λ§Œ μ •μž‘ μš°λ¦¬κ°€ μ‚¬μš©ν•˜λ©΄μ„œ μ •ν™•ν•œ κ°œλ…μ„ μ΄ν•΄ν•˜κ±°λ‚˜ μ •μ˜λ₯Ό μ•Œκ³  μžˆλŠ” 건 ν•œμ •μ μ΄κ³  ν•œκ³„κ°€ λ§Žλ‹€. κ·Έλž˜μ„œ μ˜€λŠ˜μ€ 인코딩에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄κ³  인코딩 λ°©μ‹μ˜ μ’…λ₯˜μ— λ”°λ₯Έ κ°œλ…κ³Ό νŠΉμ§•μ΄ 무엇인지 μ•Œμ•„λ³΄κΈ°λ‘œ ν–ˆλ‹€.

 

 

 

 

 

인코딩(Encoding) μ΄λž€?

νŒŒμΌμ— μ €μž₯된 μ •λ³΄μ˜ ν˜•νƒœλ₯Ό λ‹€λ₯Έ κ²ƒμœΌλ‘œ λ³€κ²½ν•˜λŠ” 것을 λ§ν•œλ‹€. λΆ€ν˜Έν™”(η¬¦θ™ŸεŒ–)라고도 ν•œλ‹€.

 

μ •λ³΄μ˜ ν˜•νƒœλ₯Ό λ‹€λ₯Έ κ²ƒμœΌλ‘œ λ³€κ²½ν•˜λŠ” 것을 인코딩이라고 ν•˜λŠ”λ°, μš°λ¦¬κ°€ μ‚¬μš©ν•˜λŠ” 정보λ₯Ό λ‚˜νƒ€λ‚΄λŠ” λ¬Έμžλ“€μ˜ ν˜•νƒœ λ˜ν•œ λ‚˜νƒ€λ‚΄λŠ” 방식이 μžˆλ‹€. κ·Έ ν˜•νƒœμ— λ§žλŠ” 인코딩 μ„€μ •μœΌλ‘œ μš°λ¦¬κ°€ 보고자 ν•˜λŠ” ν˜•νƒœλ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€. κ·Έλ ‡λ‹€λ©΄ 그런 ν˜•νƒœλŠ” 무엇이 μžˆμ„κΉŒ?

 

 

 

 

 

문자 인코딩(Encoding) μ΄λž€?

μ‚¬μš©μžκ°€ μž…λ ₯ν•œ λ¬Έμžλ‚˜ κΈ°ν˜Έλ“€μ„ 컴퓨터가 μ΄μš©ν•  수 μžˆλŠ” μ‹ ν˜Έλ‘œ λ§Œλ“œλŠ” 것

 

 

 

 

 

문자 인코딩 μ’…λ₯˜

 

ASCII(American Standard Code for  Information Interchange)

  • λ―Έκ΅­ ꡭ립 ν‘œμ€€ ν˜‘νšŒ(ANSI, American National Standards Institute)μ—μ„œ ν‘œμ€€ν™”ν•œ μ •λ³΄κ΅ν™˜μš© 7λΉ„νŠΈ λΆ€ν˜Έμ²΄κ³„μ΄λ‹€.
  • 영문 μ•ŒνŒŒλ²³μ„ μ‚¬μš©ν•˜λŠ” λŒ€ν‘œμ μΈ 문자 인코딩
  • 컴퓨터와 톡신 μž₯λΉ„λ₯Ό λΉ„λ‘―ν•œ 문자λ₯Ό μ‚¬μš©ν•˜λŠ” λ§Žμ€ μž₯μΉ˜μ—μ„œ μ‚¬μš©λ˜λ©°, λŒ€λΆ€λΆ„μ˜ 문자 인코딩이 μ•„μŠ€ν‚€μ— 기초λ₯Ό λ‘ 
  • 33개의 좜λ ₯ λΆˆκ°€λŠ₯ν•œ μ œμ–΄ λ¬Έμžλ“€κ³Ό 곡백을 λΉ„λ‘―ν•œ 95개의 좜λ ₯ κ°€λŠ₯ν•œ λ¬Έμžλ“€λ‘œ 총 128개
  • 2Byte μ΄μƒμ˜ λ‹€μ–‘ν•œ μ½”λ“œλ“€μ„ ν‘œν˜„ν•  수 μ—†κΈ° λ•Œλ¬Έμ— ν˜„λŒ€μ—λŠ” μœ λ‹ˆμ½”λ“œ(Unicode)λ₯Ό 더 많이 μ‚¬μš©

 

 

ISO/IEC 646

  • ASCII μ½”λ“œμ—μ„œ μ‚¬μš©ν–ˆλ˜ 7λΉ„νŠΈ λ¬Έμžμ½”λ“œλ₯Ό κ·œμ •ν•˜λŠ” ꡭ제 ν‘œμ€€ν™” 기ꡬ(ISO) ν‘œμ€€μ΄λ©°, 이것을 λ°”νƒ•μœΌλ‘œ 각 λ‚˜λΌ μ–Έμ–΄νŒμ˜ 문자 μ½”λ“œκ°€ κ·œμ •
  • 미ꡭ의 규격인 ASCIIλ₯Ό κ΅­μ œν™”ν•œ 체제
  • ASCIIμ—λŠ” μžˆλŠ”λ°, ISO/IEC 646 INVμ—λŠ” μ—†λŠ” λ¬Έμžλ“€μ΄ μƒλ‹Ήνžˆ 자주 μ“°μ΄λ©΄μ„œ μ‚Όμ€‘μžλ₯Ό μΆ”κ°€ν•˜κ²Œ λ˜λŠ”λ°, 이둜 인해 7λΉ„νŠΈ μ˜μ—­μ˜ 변경이 ν•„μš”ν•˜μ§€ μ•Šμ€ 8λΉ„νŠΈ 문자 μ§‘ν•œμΈ ISO/IEC 8859κ°€ λ“±μž₯ν•˜λ©΄μ„œ ISO/IEC 646은 μ—­μ‚¬μ†μœΌλ‘œ 사라짐

 

 

ISO/IEC 8859

  • 8λΉ„νŠΈ 문자 인코딩을 μœ„ν•œ ISO 및 IEC 곡동 ν‘œμ€€ μ‹œλ¦¬μ¦ˆ
  • 일련의 ν‘œμ€€μ€ ISO/IEC 8859-1, ISO/IEC 8859-2 λ“±κ³Ό 같이 λ²ˆν˜Έκ°€ 맀겨진 λΆ€λΆ„μœΌλ‘œ ꡬ성
  • 폐기된 ISO/IEC 8859-12λ₯Ό μ œμ™Έν•˜κ³  15개의 뢀뢄이 있음
  • 95개의 인쇄 κ°€λŠ₯ν•œ ASCII 문자의 λΉ„νŠΈ νŒ¨ν„΄μ€ ν˜„λŒ€ μ˜μ–΄λ‘œ 정보λ₯Ό κ΅ν™˜ν•˜κΈ°μ— μΆ©λΆ„ν•˜μ§€λ§Œ 라틴 μ•ŒνŒŒλ²³μ„ μ‚¬μš©ν•˜λŠ” λŒ€λΆ€λΆ„μ˜ λ‹€λ₯Έ μ–Έμ–΄μ—λŠ” ASCIIμ—μ„œ 닀루지 μ•ŠλŠ” μΆ”κ°€ κΈ°ν˜Έκ°€ ν•„μš”, κ·Έλž˜μ„œ ISO/IEC 8859λŠ” 8λΉ„νŠΈ 쀑 8번째 λΉ„νŠΈλ₯Ό ν™œμš©ν•˜μ—¬ λ‹€λ₯Έ 96개의 인쇄 κ°€λŠ₯ν•œ λ¬Έμžμ— λŒ€ν•œ μœ„μΉ˜λ₯Ό ν—ˆμš©ν•¨μœΌλ‘œμ¨ 문제 ν•΄κ²°

 

 

ISO 10646

  • UCS(Universal Character Set: ꡭ제 문자 μ„ΈνŠΈ)λ₯Ό μ •μ˜ν•˜κ³  있음
  • 1991λ…„λΆ€ν„° μœ λ‹ˆμ½”λ“œ μ»¨μ†Œμ‹œμ—„μ—μ„œλŠ” μœ λ‹ˆμ½”λ“œ ν‘œμ€€κ³Ό ISO/IEC 10646을 λ°œμ „μ‹œν‚€κΈ° μœ„ν•΄ ISO와 곡동 μž‘μ—…μ„ μ§„ν–‰
  • UCSλŠ” 110만개 μ΄μƒμ˜ μ½”λ“œκ°€ μžˆμ§€λ§Œ, 일반적으둜 첫 65536개(BMP, Basic Multilingual Plane, κΈ°λ³Έ λ‹€κ΅­μ–΄ 평면)만이 μ‚¬μš©λœλ‹€.
  • κ³΅μ‹μ μœΌλ‘œ 31λΉ„νŠΈ λ¬Έμžμ…‹μ„ μ •μ˜

 

 

EUC-KR

  • EUCλŠ” Extend Unix Code의 μ•½μžλ‘œ μ˜μ–΄λ₯Ό μ œμ™Έν•œ 문자λ₯Ό ν‘œν˜„ν•˜κΈ° μœ„ν•œ ν™•μž₯λΆ€ν˜Έλ₯Ό 의미, κ·Έ 쀑 EUC-KR은 ν•œκΈ€ ν‘œν˜„μ„ μœ„ν•œ 문자 인코딩 방식
  • ν•œκΈ€κ³Ό ν•œκ΅­μ—μ„œ ν†΅μš©λ˜λŠ” ν•œμž, 그리고 μ˜λ¬Έμ„ ν‘œν˜„ν•  수 있음
  • ν•œκΈ€ ν•œμž ν•œμžλ₯Ό 2Byte둜 처리
  • ASCIIλ¬Έμžμ™€ μΆ©λŒν•˜μ§€ μ•Šκ³  ASCII 문자λ₯Ό λ‹€λ£¨λŠ” λŒ€λΆ€λΆ„μ˜ ν”„λ‘œκ·Έλž¨ 및 μ‹œμŠ€ν…œμ— λ¬Έμ œμ—†μ΄ μ‚¬μš©λ¨
  • λͺ¨λ“  ν˜„λŒ€μ˜ ν•œκΈ€ μŒμ ˆμ„ ν‘œν˜„ν•  수 μ—†μŒ
  • λ‹€λ₯Έ 문자 μ„ΈνŠΈμ˜ 문자λ₯Ό ν‘œν˜„ν•  수 μ—†μŒ
  • ꡭ제적으둜 κ΅ν™˜λ  수 μžˆλŠ” λ¬Έμ„œ 및 μ—¬λŸ¬ λ‚˜λΌ μ–Έμ–΄λ₯Ό μ²˜λ¦¬ν•˜λŠ” μ‹œμŠ€ν…œ 및 ν”„λ‘œκ·Έλž¨μ˜ 개발, ν™•μž₯이 어렀움

 

 

MS 949

  • Microsoft-Window의 κΈ°λ³Έ μ½”λ“œ νŽ˜μ΄μ§€λ‘œ, ν•œκΈ€ μΈμ½”λ”©μ˜ ν•œ μ’…λ₯˜μ΄λ©° EUC-KR의 ν™•μž₯ν˜•
  • '톡합 μ™„μ„±ν˜•', 'ν™•μž₯ μ™„μ„±ν˜•' 이라고도 함
  • Microsoftκ°€ κ°œλ°œν–ˆκΈ° λ•Œλ¬Έμ— MS949, Windows-949, CP949 λ“±μœΌλ‘œλ„ 뢈림

 

 

UTF-8

  • μœ λ‹ˆμ½”λ“œλ₯Ό μœ„ν•œ κ°€λ³€ 길이 문자 인코딩 방식 쀑 ν•˜λ‚˜
  • 전세계 λͺ¨λ“  문자λ₯Ό λ™μ‹œμ— ν‘œν˜„ ν•  수 μžˆλ„λ‘ λ§Œλ“€μ–΄μ§„ κ·œμ•½
  • UTF-8을 μ‚¬μš©ν•˜λ©΄ ν•œκΈ€μ„ λͺ¨λ₯΄λŠ” κ΅­κ°€μ—μ„œλ„ ν•œκΈ€μ„ μ™„λ²½ν•˜κ²Œ ν‘œν˜„ν•  수 있음
  • UTF λŠ” "Universal Coded Character Set + Transformaion Format + 8bit"의 μ•½μž
  • μ½”λ“œ νŽ˜μ΄μ§€λŠ” 65001둜, UTF-8둜 ν‘œν˜„ κ°€λŠ₯ν•œ κΈΈμ΄λŠ” μ΅œλŒ€ 6Byte μ΄μ§€λ§Œ λ‹€λ₯Έ μΈμ½”λ”©κ³Όμ˜ ν˜Έν™˜μ„ μœ„ν•΄ 4Byte κΉŒμ§€λ§Œ μ‚¬μš©ν•œλ‹€.

 

 

 

 

 

@Junesker


 

λ°˜μ‘ν˜•