문제

유니 코드 표준에는 충분한 코드 포인트가있어서 모두 저장하려면 4 바이트가 필요합니다. 그것이 UTF-32 인코딩이하는 일입니다. 그러나 UTF-8 인코딩은 "변수 전체 인코딩"이라는 것을 사용하여 어떻게 든 훨씬 더 작은 공간으로 압박합니다.

실제로, 그것은 실제 ASCII와 똑같이 보이는 단 하나의 바이트에서 US-ASCII의 첫 127자를 나타내므로, ASCII 텍스트를 많이 사용하지 않고 UTF-8 인 것처럼 해석 할 수 있습니다. 깔끔한 트릭. 그렇다면 어떻게 작동합니까?

나는 그것을 알아 내기 위해 약간의 독서를했기 때문에 내 자신의 질문을 묻고 대답 할 것입니다. 게다가 내가 틀린 경우 누군가가 나를 교정 할 수있을 것입니다.

도움이 되었습니까?

해결책

각 바이트는 단일 바이트 코드 포인트, 다중 바이트 코드 포인트 또는 멀티 바이트 코드 포인트인지 여부를 알려주는 몇 비트로 시작합니다. 이와 같이:

0xxx xxxx    A single-byte US-ASCII code (from the first 127 characters)

멀티 바이트 코드 포인트는 각각 몇 비트로 시작하여 "이봐,"내가 무엇인지 알아 내기 위해 다음 바이트 (또는 2, 3)를 읽어야합니다. " 그들은:

110x xxxx    One more byte follows
1110 xxxx    Two more bytes follow
1111 0xxx    Three more bytes follow

마지막으로, 해당 시작 코드를 따르는 바이트는 모두 다음과 같습니다.

10xx xxxx    A continuation of one of the multi-byte characters

처음 몇 비트에서 어떤 종류의 바이트를보고 있는지 알 수 있기 때문에 무언가가 어딘가에 엉망이 되더라도 전체 시퀀스를 잃지 않습니다.

다른 팁

RFC3629 -UTF -8, ISO 10646의 변환 형식 여기서 최종 권한이며 모든 설명이 있습니다.

요컨대, 단일 문자를 나타내는 UTF-8에 인코딩 된 1 대 4 바이트 시퀀스의 각 바이트에서 여러 비트는 트레일 링 바이트인지, 선행 바이트인지, 그렇다면, 몇 바이트 수를 나타내는 데 사용됩니다. 나머지 비트에는 페이로드가 포함되어 있습니다.

UTF-8은 8 비트 바이트를 사용하여 메모리에 유니 코드 코드 포인트 인 Magic U+ 숫자를 저장하는 또 다른 시스템이었습니다. UTF-8에서 0-127의 모든 코드 포인트는 단일 바이트에 저장됩니다. 코드 포인트 (128 이상)만이 2, 3, 실제로 최대 6 바이트를 사용하여 저장됩니다.

발췌 모든 소프트웨어 개발자가 절대적으로 절대적으로 최소한, 유니 코드 및 문자 세트에 대해 긍정적으로 알아야합니다 (변명 없음!)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top