php 의 유 니 코드 와 utf 8 인 코딩 에 대해 간단히 이야기 합 니 다.

유 니 코드 와 utf 8 인 코딩 재인 식
오늘 에 이 르 러 서 야 정확히 말 하면 방금 전에 나 는 UTF-8 인 코딩 과 유 니 코드 인 코딩 이 다 르 고 차이 가 있다 는 것 을 알 게 되 었 다.
그들 사이 에는 일정한 관계 가 있다.그들의 차 이 를 보 자.
UTF-8 길이 가 일정 하지 않 아 1,2,3 바이트 일 수 있 습 니 다.
유 니 코드 길이 일정,2 바이트(USC-2)
UTF-8 은 유 니 코드 와 서로 변환 할 수 있 습 니 다.
유 니 코드 와 utf 8 의 관계
유 니 코드(16 진수)
UTF-8(바 이 너 리)
0000 - 007F 0xxxxxxx
0080 - 07FF 110xxxxx 10xxxxxx
0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx
위의 표 는 두 가지 의미 가 있 는데 첫 번 째 는 유 니 코드 와 UTF-8 문자 범위 의 대응 을 알 수 있 고 유 니 코드 가 UTF-8 과 어떻게 서로 전환 하 는 지 알 수 있다.
UTF-8 에서 유 니 코드 로 의 전환 을 먼저 말씀 드 리 겠 습 니 다.
UTF-8 인 코딩 의 바 이 너 리 는 위의 3 가지 형식 과 일치 합 니 다.일치 한 후에 고정 비트(표 의 비 x 위치)를 제거 한 다음 에 오른쪽 에서 왼쪽 까지 8 개 씩 한 그룹 씩 8 개 미 만 의 왼쪽 을 받 지 않 고 2 개의 바이트 16 bits 를 채 웁 니 다.이 16 bits 는 UTF-8 에 대응 하 는 유 니 코드 인 코딩 을 표시 합 니 다.다음 과 같은 몇 가지 예 를 보 세 요.

위 그림 의 문자 인 코딩 형식 은 UTF-8 이 며,WinHex 로 16 진수 로 표시 할 수 있 습 니 다.

 => UTF-8   => UTF-8 => 16 => 16

 => E6B189 => 11100110 10110001 10001001 => 01101100 01001001 => 6C49
 => E5AD97 => 11100101 10101101 10010111 => 01011011 01010111 => 5B57

# chrome
'\u6C49'
" "
'\u5B57'
" "

# , UTF-8 Unicode ,
,11100110
UTF-8 , ,3
2 11100101 10101101 10010111
     1011011 01010111
16 ,     01011011 01010111  => 5B57

유 니 코드 에서 UTF-8 로 의 전환 을 살 펴 보 겠 습 니 다.

5B57
5B57 Unicode ,0800 <= 5B57 <= FFFF, 5B57 UTF-8 , 1110xxxx 10xxxxxx 10xxxxxx
5B57 101101101010111
UTF-8 11100101 10101101 10010111
문 제 를 말 하 다
그리고 오늘 이 문제 의 원인 은 전단 에서 많은 단 어 를 입력 하고 UTF-8 형식 은 단어 당 최대 30 바이트 이기 때문에 전단 과 배경 에서 각각 검증 합 니 다.자바 script 은 유 니 코드 인 코딩 을 사용 하고 백 엔 드 프로그램 은 UTF-8 인 코딩 을 사용 합 니 다.현재 의 해결 방법 은 이 렇 습 니 다.
전단

function utf8_bytes(str)
{
 var len = 0, unicode;
 for(var i = 0; i < str.length; i++)
 {
 unicode = str.charCodeAt(i);
 if(unicode < 0x0080) {
  ++len;
 } else if(unicode < 0x0800) {
  len += 2;
 } else if(unicode <= 0xFFFF) {
  len += 3;
 }else {
  throw "characters must be USC-2!!"
 }
 }
 return len;
}

#  
utf8_bytes('asdasdas')
8
utf8_bytes('yrt   ')
12

백 스테이지

#  GBK   
$len = ceil(strlen(bin2hex(iconv('GBK', 'UTF-8', $word)))/2);
#  UTF8   
$len = ceil(strlen(bin2hex($word))/2);
이상 에서 말 한 것 이 바로 본문의 전체 내용 이 니 여러분 들 이 좋아 하 시 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기