문자 인코딩 이해

 

1. 문자 인코딩은 무엇이며 문자 인코딩의 기원은 무엇입니까?

1. 캐릭터 세트 컬렉션

문자는 국가 문자, 문장 부호, 그래픽 기호, 숫자 등을 포함한 다양한 문자 및 기호의 일반적인 용어입니다.

문자 집합은 여러 문자의 모음입니다. 여러 유형의 문자 집합이 있으며 각 문자 집합에 포함 된 문자 수는 다릅니다. 일반적인 문자 집합은 다음과 같습니다. ASCII 문자 집합, ISO 8859 문자 집합, GB2312 문자 집합, BIG5 문자 집합, GB18030 문자 집합, 유니 코드 문자 집합 등

요약 : 어떤 문자가 사용되는지, 즉 어떤 한자, 문자, 기호 및 숫자가 표준에 포함됩니다. 포함 된 "문자"세트를 "문자 세트"라고합니다.

2. 문자 인코딩 규칙

문자 인코딩은 이진수로 된 문자 집합의 문자에 해당합니다. 예를 들어 ASCII 인코딩 규칙에서 문자 'A'는 01000010 또는 10000000 11110101에 해당하지 않지만 01000001에 해당합니다. 이것이 규칙입니다.

요약 : 각 "문자"는 1 바이트 또는 여러 바이트로 저장되며 저장하는 데 사용되는 바이트를 "인코딩"이라고합니다.

3. 문자 인코딩의 기원

컴퓨터 화면에서 볼 수있는 것은 실질적인 텍스트이고 컴퓨터 저장 매체에 저장된 이진 비트 스트림은 실제로 이진 비트 스트림이므로 둘 사이의 변환 규칙에는 통일 된 표준이 필요하므로 문자 인코딩이 있습니다.

2. 왜 그렇게 많은 문자 인코딩과 인코딩의 진화가 있는가?

1 、 ASCII

정보 교환을위한 미국 표준 코드, 정보 교환을위한 미국 표준 코드.

이 인코딩 규칙 세트는 미국에서 사용자 정의합니다. 주로 현대 영어를 표시하는 데 사용됩니다. 총 128 개의 문자가 지정됩니다. 1 바이트 (8 비트)의 마지막 7 비트 만 차지하고 첫 번째 비트는 균일하게 사용됩니다. 0으로 정의되면 바이트가 사용되지 않습니다.

2 、 ISO-8859-1

확장 된 ASCII 인코딩.

ASCII 코드와 동일한 바이트의 8 번째 비트, 즉 00000000 (0) ~ 01111111 (127)을 사용하여 섹션 10000000 (128) ~ 11111111 (255)이 코딩됩니다.

3, GB2312

중국인들이 컴퓨터를 받았을 때 한자를 표현하는 데 사용할 수있는 바이트 상태가 없었기 때문에 ASCII 코드에서 127 이후의 이상한 기호를 직접 취소하고 127 미만 문자의 의미는 동일하다고 규정했습니다. 하지만 127보다 큰 두 글자가 함께 연결되면 한자 하나를 의미합니다.

이 코드에는 수학 기호, 로마자 및 그리스어 문자, 일본어 가명도 포함되었습니다. 원래 ASCII로되어 있던 숫자, 구두점 및 문자도 모두 2 바이트 길이의 코드로 재 코딩되었습니다., 이것이 "전각"입니다. "문자로 자주 언급되며 127 자 미만의 문자를"반각 "문자라고합니다.

이 한자 체계를 "GB2312"라고합니다. GB2312는 ASCII에 대한 중국어 확장입니다. ASCII와 호환됩니다.

4 、 GBK

그러나 중국에는 너무 많은 한자가 있습니다. 곧 많은 사람의 이름을 입력 할 수 없다는 사실을 알게되었습니다. 따라서 첫 번째 바이트가 127보다 크면 하위 바이트가 더 이상 127 이후의 내부 코드가 될 필요가 없습니다. 고정 확장 문자 집합의 내용이 뒤에 오는지 여부에 관계없이 이것이 중국어 문자의 시작임을 의미합니다. 결과적으로 확장 된 코딩 체계를 "GBK"표준이라고합니다. GBK에는 GB2312의 모든 내용이 포함되어 있으며 동시에 거의 20,000 개의 새로운 한자 (전통 문자 포함) 및 기호가 추가되었습니다.

5 、 GB18030

나중에 소수 민족도 컴퓨터를 사용하여 수천 개의 새로운 소수 민족 문자를 확장하고 추가했으며 GBK는 GB18030으로 확장되었습니다. 그 이후로 중국의 문화는 컴퓨터 시대에 이어질 수 있습니다.

3. 다중 문자 인코딩에 대한 통합 표준이 있습니까?

1. 유니 코드 : 문자 인코딩 대신 문자 집합

영어, 일본어, 중국어 등 세계의 모든 기호를 포함하는 코드가있는 경우 모든 사람이이 코드 테이블을 사용하며 코드 불일치가 없습니다. 각 기호는 고유 한 코드에 해당하며 잘못된 코드 문제가 제거됩니다. 이것은 유니 코드 인코딩입니다.

유니 코드는 가능한 모든 문자를 포함하는 테이블을 나타내며 각 문자는 숫자에 해당하며이 숫자를 코드 포인트 (Code Point)라고합니다. 유니 코드는 문자에 해당하는 코드 포인트 만 지정하고 저장 방법을 지정하지 않는 기호 집합 일뿐입니다. 저장 방법에는 다른 인코딩 체계가 있습니다. 유니 코드 인코딩 체계에는 UCS와 UTF의 두 가지 주요 행이 있습니다. . UTF의 메인 라인은 Unicode Consortium에서 유지 관리하고 있으며 UCS의 메인 라인은 ISO / IEC에서 유지 관리합니다.

2 、 UCS

UCS-2는 고정 길이 바이트이며 인코딩에 2 바이트를 사용하고 UCS-4는 고정 길이 바이트이며 인코딩에 4 바이트를 사용합니다.

인코딩 방식이 통일되어 있어도 효율성이 높지 않다. 예를 들어, 기호를 저장하기 위해 4 바이트를 사용하고, 각 영문자 앞의 3 바이트는 0이어야하므로 저장 및 전송에 매우 많은 자원이 필요하다. .

3 、 UTF

UTF-8은 인코딩에 1-4 바이트를 사용하는 가변 길이 인코딩 방법입니다. UTF-8은 ASCII와 완전히 호환됩니다. ASCII 문자의 경우 UTF-8에서 사용하는 인코딩 값은 ASCII와 정확히 동일합니다. UTF-8은 유니 코드의 특정 인코딩 구현입니다. UTF-8은 인터넷에서 가장 널리 사용되는 유니 코드 인코딩 규칙입니다.이 인코딩은 네트워크 트래픽을 절약하는 데 도움이되기 때문입니다 (균일 길이 인코딩이 아닌 가변 길이 인코딩 때문).

UTF-8은 1, 2, 3 및 4 바이트 인코딩을 사용하는 가변 길이 인코딩이며 UTF-16은 2 또는 4 바이트 인코딩 만 사용합니다. UTF-16은 유니 코드의 특정 인코딩 구현이기도합니다.

네, fromCharCode () 및 charCodeAt ()

1 、 fromCharCode ()

지정된 유니 코드 값을 허용 한 다음 문자열을 반환합니다.

<script type = "text / javascript">
          document.write (String.fromCharCode (72,69,76,76,79))
</ script>

결과 : 안녕하세요

2 、 charCodeAt ()

지정된 위치에있는 문자의 유니 코드 인코딩을 반환 할 수 있습니다.

<script type = "text / javascript">
         var str = "Hello world!"
       document.write (“첫 번째 문자의 유니 코드 :”+ str.charCodeAt (0) +“<br />”) ;
</ script>

결과 : 첫 번째 문자의 유니 코드는 다음과 같습니다. 72

다섯, 요약

 ASCII 코드 : 영어를 나타내는 데 사용되며 1 바이트를 사용하여 나타내는 데 첫 번째 비트는 0으로 지정되고 다른 7 비트는 데이터를 저장하며 총 128자를 나타낼 수 있습니다.

확장 된 ASCII 인코딩 : 데이터를 저장하는 데 8 비트를 사용하여 더 많은 유럽 문자를 나타내는 데 사용되며 총 256 개의 문자를 나타낼 수 있습니다.

GBK / GB2312 / GB18030 : 중국어 문자를 나타냅니다. GBK / GB2312는 중국어 간체를 의미하고 GB18030은 중국어 번체를 의미합니다.

유니 코드 인코딩 : 세계의 모든 문자를 포함하며 문자 집합입니다.

UCS-2, UCS-4 : 2 바이트 / 4 바이트를 인코딩에 사용하는 고정 길이 바이트 인 유니 코드 문자의 구현 방법 중 하나입니다.

UTF-8 : 유니 코드 문자 구현 방법 중 하나로서 1 ~ 4자를 사용하여 심볼을 나타내며 바이트 길이는 심볼에 따라 다릅니다.

 

추천

출처blog.csdn.net/qq_42269433/article/details/114973929