UTF-8 문자열의 문자를 해당 UCS-2 코드 포인트로 변환하려면 어떻게 해야 합니까?

Barbara Streisand
풀어 주다: 2024-10-30 02:15:02
원래의
912명이 탐색했습니다.

How can I convert characters in a UTF-8 string to their corresponding UCS-2 code points?

문자를 UTF-8 문자열의 UCS-2 코드 포인트로 변환

이 질문은 주어진 UTF-8 문자열에 대한 UCS-2 코드 포인트를 얻는 것에 관한 것입니다. 작업은 언어나 문자의 복잡성에 관계없이 개별 문자를 해당 UCS-2 코드 포인트로 변환하는 것입니다.

UCS-2 코드 포인트 표현

각 UCS-2 코드 포인트는 코드 포인트 값을 기준으로 1~4바이트에 저장됩니다.

  • 1바이트: 0xxxxxxx
  • 2바이트: 110xxxxxx 10xxxxxx
  • 3바이트: 1110xxxx 10xxxxxx 10xxxxxx
  • 4바이트: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

바이트 수 결정

바이트 수를 결정하려면 문자인 경우 첫 번째 바이트를 검사합니다.

  • 선행 0: 1바이트 문자
  • 선행 110: 2바이트 문자
  • 선행 1110: 3바이트 문자
  • 선행 11110: 4바이트 문자
  • 선행 10: 멀티바이트 문자의 초기가 아닌 바이트
  • 선행 11111: 잘못된 문자

C 코드 예

다음은 UTF-8 문자를 UCS-2 코드 포인트로 변환하는 샘플 C 코드입니다.

<code class="c">wchar_t utf8_char_to_ucs2(const unsigned char *utf8)
{
  if(!(utf8[0] & 0x80))      // 0xxxxxxx
    return (wchar_t)utf8[0];
  else if((utf8[0] & 0xE0) == 0xC0)  // 110xxxxx
    return (wchar_t)(((utf8[0] & 0x1F) << 6) | (utf8[1] & 0x3F));
  else if((utf8[0] & 0xF0) == 0xE0)  // 1110xxxx
    return (wchar_t)(((utf8[0] & 0x0F) << 12) | ((utf8[1] & 0x3F) << 6) | (utf8[2] & 0x3F));
  else
    return ERROR;  // uh-oh, UCS-2 can't handle code points this high
}</code>
로그인 후 복사

대체 솔루션

iconv와 같은 기존 라이브러리나 프로그래밍 언어에 맞는 특정 라이브러리를 사용할 수도 있습니다.

위 내용은 UTF-8 문자열의 문자를 해당 UCS-2 코드 포인트로 변환하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!