찾다
백엔드 개발파이썬 튜토리얼이모티콘 인코딩 탐색

Emoji 인코딩에 대한 심층 분석: 유니코드에서 UTF-8 바이트까지

Emoji가 포함된 문자열을 바이트로 변환해 보셨나요?

text = 'Hi ??‍♂️'

print(bytes(text, 'utf-8'))

출력 결과:

<code>b'Hi \xf0\x9f\x99\x8b\xf0\x9f\x8f\xbd\xe2\x80\x8d\xe2\x99\x82\xef\xb8\x8f'</code>

x가 무엇인지, 어떻게 이모티콘으로 다시 변환되는지 궁금하시나요?

더 자세히 살펴보면 단일 Emoji를 표현하려면 5개의 유니코드 문자가 필요하다는 것을 알 수 있습니다.

emoji = '??‍♂️'
print("Length: ", len(emoji))
for c in emoji:
    code = ord(c)
    print("{}\t{}\t{}".format(code, hex(code), c))

출력 결과:

<code>Length:  5
128587  0x1f64b ?
127997  0x1f3fd ?
8205    0x200d  ‍
9794    0x2642  ♂
65039   0xfe0f  ️</code>

먼저 기본 이모티콘이 있습니다. 손을 들고 있는 사람(128587 또는 16진수로 0x1f64b), 일반적으로 U 1F64B로 표시됩니다.

그리고 피부색 수정자는 밝은 피부색(127997)입니다.

이 두 가지를 결합하면 이 피부색을 지닌 성별 중립적인 손을 든 사람이 탄생합니다.

print(chr(128587) + chr(127997))

출력 결과:

<code>??</code>

끝에서 두 번째 문자는 남성 기호를 나타내고, 마지막 문자는 Variant Selector-16(VS16)이라고 하는데, 이는 이전 문자가 기호가 아닌 이모티콘으로 표시되어야 함을 나타냅니다.

많은 문자가 기호나 이모티콘으로 표시될 수 있습니다.

heart_symbol= '♥'
print(heart_symbol)
print(heart_symbol + chr(65039))

출력 결과:

<code>♥
♥️</code>

참고: 시스템이나 렌더러가 이모티콘을 지원하지 않으면 기호로 렌더링될 수 있습니다. 이 경우 출력을 복사하여 다른 텍스트 편집기나 브라우저에 붙여넣어 차이점을 확인하세요.

따라서 처음 두 글자와 마지막 두 글자는 두 개의 개별 이모티콘 표현을 나타냅니다. 가운데 문자는 ZWJ(Zero-Width Joiner)라고 하며 두 개 이상의 이모티콘을 결합하는 데 사용됩니다.

woman = '?'
laptop = '?'
print(woman + chr(8205) + laptop)

출력 결과:

<code>?‍?</code>

물론 시스템이나 글꼴이 이러한 조합을 지원해야 합니다. 그렇지 않으면 별도의 문자로 렌더링됩니다.

man = '?'
toilet = '?'

print(man + chr(8205) + toilet)

출력 결과:

<code>?‍?</code>

이제 일반적으로 UTF-8 인코딩에서 각 유니코드 문자가 어떻게 바이트로 표시되는지 살펴보겠습니다.

U 1F64B라는 캐릭터를 생각해 봅시다.

먼저 문자 범위에 따라 저장하는 데 필요한 바이트 수를 결정해야 합니다. 숫자 자체를 단 3바이트로 저장할 수 있지만 다시 단일 문자로 디코딩할 수 있는 방법은 없습니다. 따라서 다음 패턴이 사용됩니다. (이 패턴을 사용하는 이유는 무엇입니까?)

11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

이제 이 패턴에 숫자 0x1f64b의 비트를 넣어보겠습니다. 먼저 바이너리로 변환합니다.

print(bin(0x1F64B))

출력 결과:

<code>0b11111011001001011</code>

패턴은 21비트이므로 일치하도록 시작 부분에 0을 추가하겠습니다.

000011111011001001011
000 011111 011001 001011

패턴에 넣기: 11110000 10011111 10011001 10001011

이제 이 바이트의 16진수 표현은 무엇입니까?

print(list(map(hex, [0b11110000, 0b10011111, 0b10011001, 0b10001011])))

출력 결과:

<code>['0xf0', '0x9f', '0x99', '0x8b']</code>

이는 우리가 이해하고 싶은 처음 4개x와 일치합니다. 이제 당신은 그것이 무엇을 의미하는지 알게 되었습니다.

관련 참고 사항: https://www.php.cn/link/0da44af358e8fcb6a6c2040602172d8d

Exploring emoji encodings

위 내용은 이모티콘 인코딩 탐색의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
2 시간의 파이썬 계획 : 현실적인 접근2 시간의 파이썬 계획 : 현실적인 접근Apr 11, 2025 am 12:04 AM

2 시간 이내에 Python의 기본 프로그래밍 개념과 기술을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우기, 2. 마스터 제어 흐름 (조건부 명세서 및 루프), 3. 기능의 정의 및 사용을 이해하십시오. 4. 간단한 예제 및 코드 스 니펫을 통해 Python 프로그래밍을 신속하게 시작하십시오.

파이썬 : 기본 응용 프로그램 탐색파이썬 : 기본 응용 프로그램 탐색Apr 10, 2025 am 09:41 AM

Python은 웹 개발, 데이터 과학, 기계 학습, 자동화 및 스크립팅 분야에서 널리 사용됩니다. 1) 웹 개발에서 Django 및 Flask 프레임 워크는 개발 프로세스를 단순화합니다. 2) 데이터 과학 및 기계 학습 분야에서 Numpy, Pandas, Scikit-Learn 및 Tensorflow 라이브러리는 강력한 지원을 제공합니다. 3) 자동화 및 스크립팅 측면에서 Python은 자동화 된 테스트 및 시스템 관리와 ​​같은 작업에 적합합니다.

2 시간 안에 얼마나 많은 파이썬을 배울 수 있습니까?2 시간 안에 얼마나 많은 파이썬을 배울 수 있습니까?Apr 09, 2025 pm 04:33 PM

2 시간 이내에 파이썬의 기본 사항을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우십시오. 이를 통해 간단한 파이썬 프로그램 작성을 시작하는 데 도움이됩니다.

10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법?10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법?Apr 02, 2025 am 07:18 AM

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까?중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까?Apr 02, 2025 am 07:15 AM

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

Python 3.6에 피클 파일을로드 할 때 '__builtin__'모듈을 찾을 수없는 경우 어떻게해야합니까?Python 3.6에 피클 파일을로드 할 때 '__builtin__'모듈을 찾을 수없는 경우 어떻게해야합니까?Apr 02, 2025 am 07:12 AM

Python 3.6에 피클 파일로드 3.6 환경 보고서 오류 : modulenotfounderror : nomodulename ...

경치 좋은 스팟 코멘트 분석에서 Jieba Word 세분화의 정확성을 향상시키는 방법은 무엇입니까?경치 좋은 스팟 코멘트 분석에서 Jieba Word 세분화의 정확성을 향상시키는 방법은 무엇입니까?Apr 02, 2025 am 07:09 AM

경치 좋은 스팟 댓글 분석에서 Jieba Word 세분화 문제를 해결하는 방법은 무엇입니까? 경치가 좋은 스팟 댓글 및 분석을 수행 할 때 종종 Jieba Word 세분화 도구를 사용하여 텍스트를 처리합니다 ...

정규 표현식을 사용하여 첫 번째 닫힌 태그와 정지와 일치하는 방법은 무엇입니까?정규 표현식을 사용하여 첫 번째 닫힌 태그와 정지와 일치하는 방법은 무엇입니까?Apr 02, 2025 am 07:06 AM

정규 표현식을 사용하여 첫 번째 닫힌 태그와 정지와 일치하는 방법은 무엇입니까? HTML 또는 기타 마크 업 언어를 다룰 때는 정규 표현식이 종종 필요합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)