code point 및 code unit
1614 단어 문서
코드 포인트/코드 포지션, 문자 집합 인코딩은 모든 문자 (character) 가 지정한 유일한 정수 (integer) 입니다.문자 인코딩 ASCII는 128개의 코드 포인트를 포함하고 범위는 0x00~0x7F이다.Extended ASCII는 256개의 코드 포인트를 포함하고 범위는 0x00~0xFF이다.유니코드는 1114112개의 코드 포인트 범위가 0x000000~0x10FFF입니다.
유니코드 코드 유닛은 특정 유니코드 문자의 인코딩 비트(bit size)입니다.예를 들어 UTF-8의 코드 유닛은 8비트(8bits)입니다.UTF-16의 코드 유닛은 16비트입니다.UTF-32의 코드 유닛은 32비트입니다.
인코딩에 따라 문자 (character) 를 표시하기 위해서는 코드 유닛이 하나 이상 필요할 수 있습니다.UTF-16 인코딩 코드 유닛의 크기는 16비트입니다.16비트가 표시할 수 있는 코드 포인트의 개수는 0xFFF+1(Basic Multilingual Plane, 기본 다문종 평면)이고 이 범위는 세계에서 자주 사용하는 문자를 포괄한다)이다.코드포인트가 BMP 범위를 초과하는 문자를 나타내기 위해 UTF-16 인코딩은 프록시 쌍(surrogate pair)을 사용합니다.UTF-16 인코딩에서는 BMP를 초과하는 모든 code point의 문자는 16비트 code unit 2개로 표시됩니다.따라서 UTF-16 인코딩의 일부 문자는 두 개의 코드 unit가 필요할 수 있으며 16자리 코드 unit는 문자의 길이를 정확하게 나타낼 수 없습니다.
Java JVM의 String 클래스는 UTF-16을 사용하여 인코딩됩니다.Java의 String.length()는 문자열의 code unit 수를 반환합니다.JDK 1.5부터 String을 사용할 수 있습니다.코드PointCount (int begin Index, int end Index) 는 문자의 개수를 가져옵니다. 에이전트를 문자로 마주칩니다.
코드를 하나 봅시다.
public class StringTest {
public static void main(String[] args) {
String s = "\u0041\u00DF\u6771\uD801\uDC00";
System.out.println("length:" + s.length());
System.out.println("codePointCount:" + s.codePointCount(0, s.length()));
}
}
코드 실행 결과:
length:5
codePointCount:4
알겠습니다. 스트링.length() 및 String.codePointCount(int beginIndex, int endIndex)의 기능은 왜 이런 결과가 나왔는지 알 수 있을 것이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
지금 막 설계서 등의 문서를 버전 관리하지 않거나…현재, 참가하고 있는 프로젝트가 설계서의 관리를 파일 서버만으로 실시하고 있어, 매우… 매우 불편하게 느껴졌기 때문에, 이 기사를 남깁니다. ・모 Web사이트 3기 추가 개발 안건 1기 개발 중반부터 참가를 해, 그...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.