>  기사  >  백엔드 개발  >  유니코드 인코딩 변환기 php utf-8을 유니코드 함수로 페이지 1/2

유니코드 인코딩 변환기 php utf-8을 유니코드 함수로 페이지 1/2

WBOY
WBOY원래의
2016-07-29 08:38:151312검색

UTF 인코딩
UTF-8은 UCS를 8비트 단위로 인코딩합니다. UCS-2에서 UTF-8로의 인코딩 방법은 다음과 같습니다.
UCS-2 인코딩(16진수)
UTF-8 바이트 스트림(바이너리)
0000 - 007F
0xxxxxxx
0080 - 07FF
110xxxxxx 10xxxxxx
0800 - FFFF
1110xxxx 10xxxxxx 10xxxxxx
예를 들어, "중국어" 문자의 유니코드 인코딩은 6C49이므로 3을 사용해야 합니다. -바이트 템플릿 획득: 1110xxxx 10xxxxxx 10xxxxxx. 6C49를 바이너리로 쓰면 0110 110001 001001입니다. 이 비트 스트림을 사용하여 템플릿의 x를 바꾸면 11100110 10110001 10001001, 즉 E6 B1 89가 됩니다.
드디어 유니코드와 utf8 간의 변환이 완료되었습니다.
utf-8로 인코딩된 문자 ch가 3바이트인 경우. xx yy zz
AND a를 얻기 위한 xx와 1F
AND b를 얻기 위한 yy와 7F
AND c를 얻기 위한 zz와 7F
(64a b)*64 c = ch(unicode 인코딩)
echo.php는 아무것도 아닙니다. 몇 가지 기능만 있으면 됩니다.
");
//유니코드 파일 쓰기
$ucs2data = utf8ToUnicode($data,"little");
$endian = chr(0xFE).chr(0xFF);
$ endian = chr(0xFF).chr(0xFE);
$rt = file_put_contents ( "ucs2.txt", $endian.$ucs2data)
//19:32, utf8toUnicode 함수
/ /20:09. 리틀 엔디안과 빅 엔디안 문제를 발견했습니다.
//빅 엔디안에 저장된 유니코드 문자열은
//메모장에서만 인식할 수 없습니다. 🎜>$rt = file_put_contents ( "usc2ys_data.txt ", $ucs2_ysdata);
//utf8 파일 쓰기
$utf8data = unicodeToUtf8($ucs2data); // 20:52. 문자열을 다시 utf8 코드로 변환합니다.
$rt = file_put_contents ( " utf8.txt", $utf8data);
echo(urlencode($utf8data));echo("");
$esc = utf8Escape($data) ;
echot($esc);
$esc = phpEscape($data);
echot($esc);
$unesc = phpUnescape($esc)
echot($unesc ); /
함수 utf8ToUnicode($str,$order="little")
{
$ucs2string ="";
$n=strlen( $str); 0;$i0x80) { //110xxxxx 10xxxxxx
$a = (ord($str[$i]) & 0x3F )0x80 && ord($str[$i 2])>0x80) { //1110xxxx 10xxxxxx 10xxxxxx
$a = (ord($str[$i]) & 0x1F) utf8 인코딩 문자열로 변환
* 매개변수 str, 유니코드 인코딩 문자열 .
* 매개변수 순서, 유니코드 문자열의 저장 순서(빅 엔디안이든 리틀 엔디안이든)
* 변환된 문자열인 utf8string을 반환합니다.
*
*/
함수 unicodeToUtf8($str,$order="little")
{
$utf8string =""
$n=strlen($str);
for ($i=0;$i는 다시 변환됩니다.
$i ; //2바이트는 유니코드 문자를 나타냅니다.
$c = "";
if($val utf8string . = $c;
}
return $utf8string;
} // end func
/*
* utf8로 인코딩된 문자열을 이스케이프와 동일한 유니코드 패턴으로 인코딩합니다.
* utf8 코드만 허용되는 이유는 utf8 코드와 유니코드 사이에 수식 변환만 있기 때문입니다. 다른 코드는 코드표를 찾아 변환해야 합니다.
* utf8 코드를 찾는 규칙이 맞는지 모르겠습니다.
* utf2ucs를 호출하여 각 문자의 코드 값을 계산하는 것은 너무 비효율적이지만, 계산 프로세스가 포함되어 있으면 코드를 읽기가 쉽지 않습니다. "/[\xC0-\xE0].|[\xE0-\xF0]..|[\x01-\x7f] /",$str,$r)//prt($r); 🎜>$ar = $r[0];
foreach($ar as $k=>$v) {
$ord = ord($v[ 0]
if( $ordutf8 코드
$ar[$k] = "%u".utf2ucs($v);
}
elseif($ordutf8 코드
$ar [$k] = "%u".utf2ucs ($v);
}
}//foreach
return Join("",$ar)
}
/**
*
* utf8로 변환 문자를 ucs-2 인코딩으로
* 매개변수 utf8로 인코딩된 문자
* 문자를 사용할 수 있습니다.
*
* 원리: 유니코드를 utf-8 코드로 변환하는 방법은 헤더 고정 비트입니다.
*/
함수 utf2ucs($str){
$n=strlen($str)
if ($n=3) {
$highCode = ord($str[0 ]);
$midCode = ord($str[1]);
$lowCode = ord($str[2])
$a = 0x1F & $highCode; 0x7F & $midCode;
$c = 0x7F & $lowCode
$ucsCode = (64*$a $b)*64 $c
}
elseif ($n==2) {
$highCode = ord($str[0]);
$lowCode = ord($str[1])
$a = 0x3F & $highCode;
$b = 0x7F & $lowCode; //0x7F는 0x80의 보수입니다.
$ucsCode = 64*$a $b
elseif($n==1) {
$ucscode = ord($str);
}
return decex($ucsCode);
}
/*
* 사용법: 이 함수는 자바스크립트의 이스케이프 인코딩을 반전하는 데 사용됩니다. 기능 문자.
* 키 일반 검색에 문제가 있는지 모르겠습니다.
* 매개변수: JavaScript로 인코딩된 문자열입니다.
* 예: unicodeToUtf8("%u5927")= big
* 2005-12-10
*
*/
function phpUnescape($escstr){
preg_match_all(" / %u[0-9A-Za-z]{4}|%.{2}|[0-9a-zA-Z. -_] /",$escstr,$matches); //prt($matches ) ;
$ar = &$matches[0];
$c = ""
foreach($ar as $val){
if (substr($val,0,1) ! ="%") { //영숫자인 경우 - _.
$c .=$val
}
elseif (substr($val,1,1)!= "u ") { //영숫자가 아닌 경우 -_.ascii 코드
$x = hexdec(substr($val,1,2))
$c .=chr($x) ;
}
else { //0xFF보다 큰 코드인 경우
$val = intval(substr($val,2),16)
if($val %u". bin2hex( iconv( 'gbk ' ,"UCS-2",$chars[$i].$chars[$i 1] ) )
$i
}
}//foreach
return $ar;
}
?>

현재 1/2 페이지 12다음 페이지

위 내용은 유니코드 인코딩 변환기의 내용을 포함하여 유니코드 함수 페이지 1/2에서 PHP utf-8을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.

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