2011-10-11 3 views
0

유니 코드 코드 단위는 2 바이트 이상 (2 바이트 시퀀스)으로 문자를 나타낼 수 있기 때문에 가변 크기 일 수 있습니다. 바이너리 형식으로 저장하면 프로그램에서이를 어떻게 읽을 지 어떻게 알 수 있습니까?프로그램이 유니 코드를 어떻게 읽습니까?

그런 다음
0F0F 13F3 02AD BC39 09F3 459F 

어떻게 어디서 중지 알 것 :

'는'0F0F 13F3로 표현하고 내가 파일에 foo.txt에서 그들을 작성하는 경우 'B'가 02AD BC39 09F3 459F

으로 표시됩니다 말할 수 있습니다 'a'와 'b'에 대해서?

여기 사람들 나는 utf-8과 같은 인기있는 문자셋을 기반으로하는 다른 형식으로 변환하지 않고 순수한 유니 코드를 쓰는 것을 말하고 있습니다.

+1

유니 코드를 설명 할 때 용어는 중요합니다. 코드 단위, 코드 포인트 및 문자를 함께 흐리게 처리합니다 (세 가지 용어). 인코딩 (UTF-8, UTF-16, UTF-32) 코드 단위는 고정 길이입니다. (1, 2 W 4 Y이트) 코드 포인트는 UTF-8 W UTF-16로 여러 코드 단위를 요구할 수 있습니다. 아래의 좋은 답변 외에도 unicode.org/glossary – Thanatos

+0

@ Thanatos 저를 도와 주셔서 감사합니다. –

답변

3

먼저 모든 유니 코드 표현이 가변 길이 인 것은 아닙니다. UTF-32 및 USC-2는 고정 길이입니다. UTF-8 및 UTF-16은 각각 길이가 가변적입니다.

둘째, 사양을 읽으면 시퀀스가 ​​자체 설명임을 알게됩니다. 첫 번째 바이트가 될 수있는 바이트 값 (UTF-8)은 두 번째 또는 세 번째 등이 될 수 없습니다. UTF-16이 아닌 BMP 문자를 나타내는 서로 게이트 쌍에 위와 같습니다.

2

일반적으로 사용되는 인코딩은 UTF-8입니다. 구조화 된 방식은 문자의 바이트 중 미리 정의 된 일부 비트가 더 많은 바이트가 있는지 여부를 알려주는 것입니다.

멋진 다이어그램을 보려면 http://en.wikipedia.org/wiki/UTF-8#Design을 참조하십시오.

+0

유니 코드를 그대로 인코딩하는 데 관심이 있습니다. –

+1

유니 코드는 문자 정의 집합이며 인코딩이 아닙니다. UTF-7, UTF-8, UTF-16, UTF-32는 유니 코드의 인코딩입니다. 바이너리 데이터에서 다루는 것은 인코딩입니다. 읽을 수 있기 전에 어떤 인코딩이 사용되었는지 확인해야합니다. 때로는 데이터에 BOM이있어 인코딩을 알려줍니다. 그렇지 않다면 인코딩이 무엇인지 알기 위해 외부 정보에 의존해야합니다. –

관련 문제