unicode란 무엇일까?

jiin lee·2023년 12월 31일
0

frontend-javascript이론

목록 보기
2/15

유니코드란?

유니코드(Unicode)는 다양한 종류의 기호를 인코딩하고 나타내기 위한 표준입니다.
이것은 인코딩 자체가 아니며, 어떻게 기호가 숫자로 변환되는지를 정의하지 않습니다. 그저 기호와 숫자 간의 매핑을 정의하는 명세서일 뿐입니다.

Unicode는 Universal Character Set (UCS)와 Universal Transformation Format (UTF)로 나뉩니다.

UCS란?

UCS는 모든 기호와 해당 기호의 코드를 정의하는 인덱스입니다. Unicode는 1,112,064개의 코드 포인트를 수용할 수 있지만, 2019년 5월 현재로서는 137,994개만 사용 중입니다.

기호는 코드 포인트에 대응하며, 코드 포인트는 일반적으로 U+ 뒤에 4자에서 6자의 16진수 값으로 표시됩니다.

Unicode는 17개의 평면으로 나뉘며, 각 평면은 0에서 16까지의 숫자로 식별됩니다. BMP(Basic Multilingual Plane)는 0번 평면으로, 대부분의 모던 작성 체계 및 언어에 해당하는 문자와 많은 기호를 포함합니다.

UTF란?

Universal Transformation Format (UTF)는 Unicode를 지원하는 일련의 인코딩입니다.
UTF-8과 UTF-16이 가장 널리 사용되는데,
UTF-8은 대부분의 인터넷이 사용하는 인코딩으로 약 94%가 UTF-8로 인코딩되어 있습니다.
UTF-8은 1바이트에서 4바이트까지 사용하며 ASCII와 역호환성이 있습니다.

유니코드는 인터넷을 포함한 여러 곳에서 널리 사용되며, 텍스트와 관련된 작업을 할 때 유니코드와 가장 일반적인 인코딩과의 관계를 이해하는 것이 중요합니다.

유니코드(Unicode)는 텍스트를 인코딩하고 표현하기 위한 표준입니다. 이는 다양한 종류의 기호를 나타내기 위한 문자 집합 및 해당 문자를 바이트로 어떻게 변환할지에 대한 규정으로 이루어져 있습니다.

왜 ASCII 인코딩을 사용하지 않고, UNICODE를 사용하는 걸까?

ASCII 인코딩이 등장하기 전에는 여러 인코딩이 존재했고, 그 중 하나가 ASCII 인코딩이었습니다.
그러나 ASCII는 7비트 인코딩으로 제한된 영어 알파벳 기반의 문자 집합이었기 때문에 여러 한계가 있었습니다.

이후 ASCII의 확장이나 특정 스크립트를 위한 인코딩들이 등장했지만, 서로 다른 인코딩에서 동일한 숫자가 서로 다른 문자를 나타낼 수 있어 통신이 복잡해지는 문제가 있었습니다.
이러한 문제를 해결하기 위해 유니코드가 등장
했습니다.

유니코드는 텍스트를 나타내기 위한 표준으로서, 각 문자와 숫자 간의 매핑을 정의합니다. 기호와 숫자 간의 매핑은 코드 포인트를 사용하여 이루어집니다. 코드 포인트는 보통 U+ 다음에 4~6자리의 16진수 값으로 표현되며, HTML에서는 이를 변환하여 사용할 수 있습니다.

유니코드는 Universal Transformation Format (UTF)도 정의합니다. UTF는 Unicode를 지원하기 위한 여러 인코딩 방식을 의미하며, 그 중에서도 UTF-8과 UTF-16이 가장 널리 사용됩니다. UTF-8은 1바이트에서 4바이트까지 가변 길이로 문자를 인코딩할 수 있으며, ASCII와의 하위 호환성이 있습니다.

요약적으로, 유니코드는 텍스트를 표현하기 위한 표준으로, 문자와 숫자 간의 매핑을 정의하고 여러 인코딩 방식을 지원합니다. 이를 통해 전 세계의 다양한 문자 및 기호를 표현할 수 있으며, 특히 UTF-8은 현재 가장 널리 사용되는 텍스트 인코딩 중 하나입니다.

  • unicode standard의 일부

ex) 알파벳 표현 방식
U+0048 U+0079 U+0070

Unicode code points are written using U+ followed by a hexadecimal number. What is the minimum amount of symbols the hexadecimal numbers have in these code points?
-> format U+0000 - U+FFFF

유니코드 코드 포인트는 16진수 숫자로 표현됩니다. 여기서 말하는 "16진수 숫자의 최소량"이란, 16진수로 나타낸 숫자가 가질 수 있는 최소 자릿수를 의미합니다.

16진수는 0부터 15까지의 값을 나타낼 수 있는데, 이를 표현하는데 필요한 최소한의 숫자 자릿수는 4입니다. 즉, 16진수의 한 자리 수는 0부터 F까지의 값 중 하나를 나타낼 수 있습니다. 따라서 "U+0041"과 같은 유니코드 코드 포인트에서 16진수 숫자의 최소 자릿수는 4이며, 최대 자릿수는 특정 코드 포인트에 따라 다를 것입니다.

유니코드의 plane은 17개

유니코드 코드 포인트는 17개의 평면(plane)으로 나누어집니다. 각 평면은 0부터 16까지의 번호를 가지며, 각 평면은 65,536 (2^16)개의 코드 포인트를 연속적으로 가지고 있습니다.

Basic Multilingual Plane (BMP):

BMP는 0번 평면으로, 대부분의 모던한 문자 집합과 언어, 그리고 다양한 기호를 포함하고 있습니다.
BMP의 코드 포인트 범위는 U+0000에서 U+FFFF까지이며, 이 중에서 ASCII 문자는 U+0000에서 U+007F까지에 해당합니다.
BMP에는 기본적인 문자들이 포함되어 있으며, 이를 통해 대부분의 텍스트 정보를 다룰 수 있습니다.

Supplementary Planes (1부터 16까지):

1부터 16까지의 나머지 평면은 "보조 평면(supplementary planes)"이라고 불립니다.

대부분의 보조 평면은 미할당(unassigned)되어 비어 있습니다. 이는 나중에 새로운 문자나 기호를 추가할 여지를 남겨둔 것입니다.

Supplementary Multilingual Plane (SMP):

BMP 다음으로 오는 보조 평면 중 하나인 SMP는 코드 포인트 범위가 U+10000에서 U+1FFFF까지입니다.
SMP에는 역사적인 스크립트 뿐만 아니라 음악 표기법, 연금술 기호, 기하학적 모양, 이모지 등이 포함되어 있습니다.
SMP는 특별한 문자와 기호들을 제공하여, 이를 지원하는 프로그래밍 언어에서는 문자열에 이모지나 특별한 문자를 사용할 수 있습니다.

이러한 유니코드 평면은 전 세계의 다양한 문자체계와 특수 기호를 포용하고, 미래에도 새로운 문자가 추가될 여지를 남겨 두기 위한 구조입니다.

문제) Unlocking Unicode: Exploring Hexadecimal Code Points

Consider the following Unicode code points written in hexadecimal format: 0061, 0416, 20AC, 1F600. What do these hexadecimal values signify in the context of the Unicode encoding standard, and how does Unicode differ from other encoding systems such as ASCII?

  • 분석 : 0061, 0416, 20AC, 1F600
  • BMP : 0061, 0416, 20AC (0-16까지의 plane)
  • SMP : Supplementary Multilingual Plane
    BMP 다음으로 오는 보조 평면 중 하나인 SMP는 코드 포인트 범위가 U+10000에서 U+1FFFF까지입니다.
    -> SMP와 BMP를 포괄하는 정답을 골라야 한다!
  • 정답 : These code points correspond to specific characters in the Unicode character set, which provides a unique code point for every character, regardless of the platform, device, or application.

  • 아닌 이유 : 아직 all langauges를 포괄하고 있지는 않음
    These hexadecimal code points indicate byte values as part of the 16-bit unicode to represent all languages and symbols.

문제) What is unicode?

  • encoding that determine how symbols are converted to bytes
    -> 이는, unicode가 아닌, unicode transfromation fromats인, utf에 해당하는 설명!

  • 정답) standard in form of a table that defines the mapping between symbols and numbers = unicode는, character set인, ucs에 해당!

Remember that Unicode can't tell how exactly characters get transformed into bytes - it's not an encoding; Unicode encodings like UTF-8 or UTF-16 do

Unicode as a Character Set (UCS):

Unicode는 주로 문자 집합(Character Set)으로서의 역할을 합니다.
이것은 각 문자에 고유한 코드 포인트를 할당하여 문자와 숫자(U+10000에서 U+1FFFF까지)간의 매핑을 정의합니다.

UCS는 각 문자에 대한 코드 포인트를 정의하고 있지만,
이것이 실제로 컴퓨터에서 어떻게 표현되고 저장되는지에 대한 구체적인 방법을 제시하지 않습니다.

Unicode Transformation Formats (UTF):

Unicode Transformation Format (UTF)은 Unicode 문자를 실제로 바이트로 변환하고 저장하는 방식을 정의하는 인코딩 스킴입니다.

UTF-8, UTF-16, UTF-32 등은 Unicode 문자를 특정한 바이트 시퀀스로 매핑하는 규칙을 제공합니다.

UTF가 Unicode 문자를 바이트로 인코딩하는 방식을 결정하므로, UTF는 'encoding'이라는 용어를 가지고 있습니다.
즉, "Unicode is a standard for encoding and representing text"에서 'encoding'은 문자 집합과 해당 문자를 바이트로 변환하는 규칙을 모두 의미하고 있습니다.

하지만 이것을 더 명확히 설명하면서 UCS와 UTF를 구분해 설명하는 것이 더 정확한 표현일 수 있습니다.

문제) Which encodings support the entire Unicode standard?
-> UTF-8, UTF-16 모두에 해당한다!

인코딩 종류 비교

ASCII

ASCII is an older, limited encoding that only represents English characters and basic symbols.

UCS-2

UCS-2 is a fixed-width, 2-byte encoding that can represent a larger character set but is limited in the range of Unicode characters it can represent.

UTF-8

UTF-8 is a variable-length encoding that can efficiently represent any Unicode character, making it suitable for encoding text in many languages and scripts.

  • UTF-8(16) display text and emoji and ASCII for symbols

문제) What is the correct way to write a Unicode code point?

주의 알파벳은 a-f까지임! abcdef
U+0A71H는 불가능!!

profile
creative engineer

0개의 댓글

관련 채용 정보