>백엔드 개발 >PHP 튜토리얼 >영지버섯 포자분말의 효능과 기능 및 섭취방법 임의의 문자세트에서 웹페이지를 정상적으로 표시하는 방법 2 (계속)

영지버섯 포자분말의 효능과 기능 및 섭취방법 임의의 문자세트에서 웹페이지를 정상적으로 표시하는 방법 2 (계속)

WBOY
WBOY원래의
2016-07-29 08:36:561326검색

전송:coolcode.cn
얼마 전 어떤 문자 집합에서 웹 페이지를 정상적으로 표시하는 방법에 대한 기사를 썼습니다. 소개는 매우 간단합니다. 즉, 처음 128자 이외의 문자 집합은 NCR로 표현되지만 소개하지 않았습니다. 당시에는 너무 간단하다고 생각했기 때문입니다. 그런데 나중에 이런 질문을 하시는 분이 계셔서 여기서 자세히 설명드리겠습니다.
첫 번째 단계는 소스 문자 집합의 문자열을 UTF-16 문자 집합으로 변환하는 것입니다. 이 단계는 UTF-16 문자 집합의 각 문자가 2바이트이고 나중에 처리하기 쉽기 때문입니다. 소스 문자 세트에서 직접 처리하는 것은 매우 복잡합니다. 소스 문자 세트는 원본 웹 페이지의 메타 태그에서 얻을 수도 있고 별도로 지정할 수도 있습니다. HTML 파일이어야 합니다(다른 파일도 가능합니다. 예를 들어 WordPress의 중국어 패키지 소스 파일은 po 파일이고 그 안에 있는 내용도 이런 방식으로 처리할 수 있습니다). HTML 파일이더라도 문자 집합을 지정하기 위한 메타 태그가 반드시 있는 것은 아니므로 형식을 통해 별도로 지정합니다. 문자 집합은 비교적 안전합니다. 한 문자 세트를 다른 문자 세트로 변환하는 것은 복잡하다고 생각할 수도 있습니다. 실제로 직접 구현하는 것은 매우 번거롭지만 PHP에는 이미 이러한 기능이 포함되어 있기 때문에 매우 쉽습니다. iconv 기능을 통해 문자 집합을 설정할 수 있습니다. iconv 확장이 컴퓨터에 설치되어 있지 않으면 mb_convert_encoding 기능을 사용할 수도 있습니다. 멀티바이트 문자열 확장이 설치되어 있지 않으면 기본적으로 불가능하기 때문입니다. 최고의 전문가가 아닌 이상 수많은 유형의 코드를 직접 변환할 수 있습니다! iconv를 사용하는 것이 더 효율적이고 더 많은 문자 집합을 지원하므로 사용하는 것이 좋습니다.
위 단계를 완료한 후 다음 단계는 문자열을 2바이트 단위로 처리하는 것입니다. 이 두 바이트는 숫자로 직접 변환되어 xxxx;에서 xxxxx입니다. 숫자가 128보다 작으면 이 문자를 직접 사용하고(여기서는 단일 바이트가 됨에 유의하세요), 그렇지 않으면 xxxx; 형식을 사용합니다. 여기서 주목해야 할 점은 이 숫자가 65279(16진수 0xFEFF)인 경우 이를 무시하십시오. 이는 유니코드 인코딩의 전송 제어 문자이고 현재 문자열에는 iso-8859-만 있습니다. 1은 첫 번째 128자입니다. 인코딩하므로 필요하지 않습니다.
기본 아이디어는 다음과 같습니다. 구현 프로그램은 다음과 같습니다.
다운로드: nochaoscode.php

코드 복사 코드는 다음과 같습니다.


함수 nochaoscode($encode, $str) {
$str = iconv($encode, "UTF-16BE", $str);
for ($i = 0; $i < strlen($str); $i ,$i ) {
$code = ord($str{$i}) * 256 ord($str{$i 1});
if ($code < 128) {
$output .= chr($code);
} else if ($code != 65279) {
$ 출력 = "&#". ";";
       }
}
$output을 반환합니다.
}
?>


함수의 매개변수 중 $encode는 소스 문자셋이고, $str은 변환이 필요한 문자열입니다. 반환 결과는 변환된 문자열입니다.
보충: 오늘 Legend는 mb_convert_encoding 함수를 직접 사용하는 더 간단한 방법을 알려주었습니다. mb_convert_encoding은 NCR 인코딩인 HTML-ENTITIES라는 인코딩 형식을 지원하기 때문입니다. 사용하는 것이 훨씬 더 간단합니다.

이상은 영지버섯 포자분말의 효능과 기능, 섭취방법 등을 포함한 임의의 문자세트로 웹페이지를 정상적으로 표시하는 방법 2(계속)를 소개하고 있습니다. 관심 있는 친구들의 도움이 도움이 되기를 바랍니다.

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