이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 4124|회답: 1

ASCII 코드, ISO8859-1, 유니코드, GBK, UTF-8의 차이점

[링크 복사]
게시됨 2022. 12. 11. 오후 2:01:58 | | |
왜 코딩이 필요한가요?

컴퓨터에서 가장 작은 저장 단위는 바이트(byte)이며, 바이트로 표현할 수 있는 문자 수는 제한되어 있습니다. 1바이트=8비트, 바이트는 최대 255자만 표현할 수 있습니다. 그리고 세상에는 여러 언어가 존재하며, 바이트로 표현할 수 없는 문자도 많기 때문에, Java의 char 표현 문자는 이 코딩 문제를 해결하기 위해 사용됩니다. 한 char는 두 바이트를 차지하므로 char와 가장 작은 단위 바이트 사이에 인코딩되어야 합니다. 반대는 디코딩입니다.

사실 인코딩과 디코딩은 완성된 번역 과정이며("번역"은 이해하기 쉽다), 다양한 코딩 방법은 사전과 같다.

1. ASCII 코드

전체 명칭은 미국 정보 교환 표준 코드(American Standard Code for Information Interchange)로, 주로 현대 영어 및 기타 서유럽 언어를 표시하는 데 사용되는 세계에서 가장 일반적인 단일 바이트 코딩 시스템입니다.

ASCII 코드는 7비트로 표현되며, 128문자만 표현할 수 있고, 0~31은 enter, 백스페이스, delete와 같은 제어 문자를 나타냅니다; 32~126은 인쇄된 문자를 키보드를 통해 입력할 수 있고 표시할 수 있음을 의미합니다.

그중 48~57은 0부터 9까지의 10개의 아라비아 숫자, 65~90은 26개의 대문자 영어, 97~122는 26개의 소문자 영어 문자, 나머지는 구두점, 연산 기호 등으로, 자세한 내용은 ASCII 표준 표에서 확인할 수 있습니다.

2, ISO-8859-1

이 인코딩은 ASCII 인코딩의 확장이지만, 여전히 단일 바이트 인코딩이며 총 256자만 표현할 수 있습니다.

ASCII는 128자만 표현할 수 있어 디스플레이를 완전히 표현할 수 없습니다ISO-8859-1은 ASCII 인코딩을 확장합니다ASCII 코드 위에 서유럽 언어인 그리스어, 태국어, 아랍어, 히브리어의 해당 텍스트 기호가 추가되며, ASCII 인코딩과 하위 호환됩니다.

3, GB2312

GB2312의 정식 명칭은 "정보기술 중국어 인코딩 문자 집합"으로, A1-F7 인코딩 범위의 2바이트 인코딩이며, A1-A9가 심볼 영역이며 총 682개의 심볼을 포함합니다; B0-F7은 한자 영역으로, 6763개의 한자를 포함합니다.

전체 명칭은 정보 교환용 중국어 문자 집합으로, 1980년에 중국에서 출시되었으며 주로 컴퓨터 시스템에서 한자 처리에 사용됩니다. GB2312는 주로 6763개의 한자와 682개의 기호를 포함하고 있습니다.

GB2312는 대부분의 한자 사용을 다루지만, 고대 중국어와 같은 특수 희귀 문자를 다룰 수 없어 GBK와 GB18030 같은 코드는 나중에 등장했습니다.

4, GBK

GBK의 정식 명칭은 "중국어 문자 내부 코드 확장 사양"으로, GB2312를 확장한 것으로 보이며, 인코딩 범위는 8140-FEFE(XX7F 제거)이고 총 23940비트의 코드로 21003개의 중국어 문자를 표현할 수 있고, 인코딩은 GB2312와 호환됩니다

GBK, 즉 중국 내부 코드 명세서(Chinese Internal Code Specification)는 1995년에 공식화되었습니다. 주로 GB2312를 확장하고, 그 위에 더 많은 한자를 추가하여 총 21,003개의 한자를 포함하고 있습니다.

GBK는 GB2312 인코딩과 하위 호환되며, 이는 GB2312에 인코딩된 중국어 문자가 GBK로 정상적으로 디코딩되어 왜곡되지 않다는 의미입니다. 하지만 GBK로 인코딩된 중국어 문자는 반드시 GB2312로 디코딩되는 것은 아닙니다.

5, GB18030

GB18030 정식 명칭은 중국어 문자 내부 코드 확장 사양(Han Character Internal Code Extension Specification)으로, 2000년에 발표되고 2001년에 시행된 최신 내부 코드 문자 집합으로, 중국 내 대부분의 소수민족 문자를 포함하고 있으며 7만 자 이상의 한자를 포함하고 있습니다.

주로 단일 바이트, 더블 바이트, 4바이트 문자 인코딩을 사용하며, GB2312와 GBK와 하위 호환됩니다. 우리나라에서는 필수 표준이지만 실제 생산에서는 드물게 사용되며, 가장 많이 사용되는 것은 GBK와 GB2312입니다.

6.유니코드

컴퓨터에서 언어가 정상적으로 표시되도록, 각 국가와 지역마다 고유한 코드가 있어 코드가 너무 많으면 서로의 코드를 알 수 없게 되었습니다. 이 시기에 ISO 조직은 전 세계 문화, 문자, 기호를 지원하기 위해 UNICODE 코딩이라는 새로운 코드를 제안했습니다. UNICODE가 공식화될 당시 컴퓨터 용량은 더 이상 문제가 되지 않았고, 고정된 2바이트로 설계되었으며, 모든 문자는 16비트로 표현되었고, 영어 문자도 포함해 이전에 8비트만 차지했기 때문에 공간 낭비가 발생했고, UNICODE는 오랫동안 홍보되거나 적용되지 않았습니다.

7, UTF-16

UTF-16의 등장은 전 세계 모든 언어가 서로 번역할 수 있는 새로운 초언어 사전을 만들기 위한 ISO입니다. 이 사전이 얼마나 복잡하고 방대한지 상상할 수 있을 것입니다. UTF-16은 유니코드 변환 형식을 나타내기 위해 두 바이트를 사용합니다(두 바이트는 16비트이므로 UTF-16)는 고정 길이 표현 방식으로, 즉 어떤 문자든 두 바이트로 표현할 수 있습니다. 이 덕분에 캐릭터를 표현하는 것이 매우 편리합니다. 하지만 단점도 있는데, 많은 문자를 한 바이트로 표현할 수 있지만 UTF-16은 두 바이트를 사용해 저장 공간 낭비입니다. 그래서 또 다른 인코딩 방식이 있는데, 그것은 UTF-8입니다.

UTF-16은 UNICODE의 구체적인 구현체이며, 16은 16비트, UTF-16은 원점으로, 컴퓨터에서 UNICODE 문자가 저장되는 방식을 정의합니다. UTF-16은 또한 모든 문자를 2바이트로 표현하여 연산 문자열이 매우 효율적입니다. 이것이 자바가 메모리에 문자를 저장할 수 있는 형식으로 UTF-16을 사용하는 중요한 이유이기도 합니다.

UTF-16은 디스크와 메모리 간 사용에 적합하며, 문자와 바이트 간의 변환이 더 간단하고 효율적이지만, 네트워크 전송에는 적합하지 않아 바이트 스트림이 손상될 수 있습니다.

8, UTF-8

UTF-8은 각 인코딩 영역마다 다른 코드 길이를 가지며, 서로 다른 유형의 문자가 1바이트에서 6바이트 사이일 수 있는 가변 길이 기술을 사용합니다.

UTF-8의 인코딩 규칙은 다음과 같습니다:

1) 1바이트이고 가장 높은 비트가 0이라면, 이는 1개의 ASCII 문자임을 의미합니다. 모든 ASCII 인코딩은 이미 UTF-8임을 알 수 있습니다

2) 11로 시작하는 1바이트라면, 연속된 1의 개수는 이 문자의 바이트 수를 의미하며, 예를 들어 110xxxxx는 더블 바이트 UTF-8 문자의 첫 번째 바이트임을 의미합니다

3) 1바이트(10으로 시작)라면 첫 번째 바이트가 아니므로 현재 문자의 첫 바이트를 얻기 위해 앞으로를 봐야 합니다.

UTF-16은 매우 효율적이지만, UNICODE의 가장 큰 단점이기도 합니다. 모든 단일 바이트 문자가 2바이트를 차지해야 하고, 저장 공간이 두 배로 늘어나 자원을 소모하며 인터넷의 급속한 발전 상황에 부합하지 않습니다. 따라서 UTF-8은 UNICODE의 가변 길이 문자 인코딩을 구현한 것으로, 1~6개의 고정 길이 바이트를 사용하여 UNICODE 문자를 인코딩할 수 있습니다.

UTF-8은 ASCII 문자에 단일 바이트 저장 공간을 사용하며, 단일 문자가 손상되더라도 이후 문자에 영향을 주지 않으므로 UTF-8은 전통적인 웹 인코딩에 이상적이며 오늘날 가장 널리 사용되는 인코딩 중 하나입니다.

중국어를 표현하고 싶다면 UTF-8 인코딩 효율이 GBK보다 높고 UTF-16보다는 낮기 때문에 GBK 외에 가장 이상적인 인코딩 방법이기도 합니다.




이전의:리눅스에서 과도한 메모리 버프/캐시 사용
다음:자산 파일 "project.assets.json"를 찾을 수 없습니다. NuGet 패키지 복원을 실행하세요...
게시됨 2022. 12. 30. 오후 2:43:17 |
알겠습니다, utf-8
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com