>백엔드 개발 >PHP 문제 >PHP를 사용하여 유니코드와 utf8을 변환하는 방법은 무엇입니까?

PHP를 사용하여 유니코드와 utf8을 변환하는 방법은 무엇입니까?

coldplay.xixi
coldplay.xixi원래의
2020-07-10 11:03:163295검색

PHP를 사용하여 유니코드 및 utf8을 변환하는 방법: 우선 [4-6] 바이트 인코딩을 고려할 필요가 없으며 4바이트 이상의 [utf-8] 문자가 나타나면 직접 인코딩할 수 있습니다. 무시되거나 잘못된 문자로 변환됩니다. 유니코드 엔터티 형식일 수 있으며 코드는 [$utf8char = "{$c};"]입니다.

PHP를 사용하여 유니코드와 utf8을 변환하는 방법은 무엇입니까?

PHP를 사용하여 유니코드와 utf8을 변환하는 방법:

유니코드 인코딩은 utf-8 및 gb 시리즈 인코딩(gb2312, gbk, gb18030) 변환의 기초입니다. 하지만 직접 utf를 만들 수도 있습니다. -8을 이들 인코딩의 비교표로 하는데, utf-8의 변수 인코딩이 불확실하기 때문에 이렇게 하는 사람이 거의 없기 때문에 일반적으로 유니코드와 gb 인코딩의 비교표를 사용하는데, 유니코드(UCS-2)가 사실상 기본이다 utf-8 인코딩은 단지 그 구현일 뿐입니다:

  • 유니코드 기호 범위 | UTF-8 인코딩 방법

  • u0000 0000 - u0000 007F |

  • u0000 0080 - u0000 07FF | 110xxxxxx 10xxxxxx
  • u0000 0800 - u0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
  • 현재 utf-8에서 사용되는 문자 모두 UCS-2에 있으므로 마찬가지로 역변환 중에 UTF-8 문자가 4바이트 이상 나타나면 왜곡된 문자로 바로 무시되거나 유니코드 엔터티 형식(" long int;")으로 변환될 수 있습니다. form), 그런 다음 처리를 위해 브라우저나 관련 구문 분석 프로그램에 넘겨줍니다. PHP를 사용하여 유니코드를 utf-8 인코딩으로 변환하는 알고리즘은 다음과 같습니다.
/*
 * 参数 $c 是unicode字符编码的int类型数值,如果是用二进制读取的数据,在php中通常要用 hexdec(bin2hex( $bin_unichar )) 这样转换
 */
function uni2utf8( $c )
{
  if ($c < 0x80)
  {
        $utf8char = chr($c);
  }
  else if ($c < 0x800)
  {
        $utf8char = chr(0xC0 | $c >> 0x06).chr(0x80 | $c & 0x3F);
  }
  else if ($c < 0x10000)
  {
        $utf8char = chr(0xE0 | $c >> 0x0C).chr(0x80 | $c >> 0x06 & 0x3F).chr(0x80 | $c & 0x3F);
  }
  //因为UCS-2只有两字节,所以后面的情况是不可能出现的,这里只是说明unicode HTML实体编码的用法。
  else
  {
        $utf8char = "&#{$c};";
  }
  return $utf8char;
}

현재 환경에서는 utf-8을 문자 집합으로 간주할 수 있습니다. == 유니코드(UCS-2)이지만 이론적으로 주요 문자 집합 관계의 포함 관계는 다음과 같습니다.

utf-8 > unicode(UCS-2) > gb18030 > gbk > gb2312

따라서 인코딩이 올바른 경우:

gb2312 => gbk => gb18030 => unicode(UCS-2) => utf-8

이러한 변환 과정은 기본적으로 표면적으로는 무손실이지만, 반대로

utf-8 => unicode(UCS-2) => gb18030=> gbk => gb2312

변환 과정에서 인식할 수 없는 문자가 있을 가능성이 매우 높으므로 utf-8 인코딩 시스템을 사용하는 경우에는 쉽게 역방향을 수행하지 않도록 하세요. . 인코딩을 변환하는 작업입니다.

관련 학습 권장 사항:
초보부터 마스터까지 PHP 프로그래밍

위 내용은 PHP를 사용하여 유니코드와 utf8을 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.