잘못된 PHP 문자열에 대한 해결 방법: 1. iconv를 통해 gb2312를 utf-8로 대체합니다. 2. mb_convert_encoding 함수를 통해 인코딩을 변환합니다.
이 기사의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터
잘못된 PHP 문자열을 해결하는 방법은 무엇입니까? PHP iconv() 함수의 문자 인코딩 변환 문제
PHP의 iconv 함수 라이브러리는 다양한 문자 집합 간의 변환을 완료할 수 있으며 PHP 프로그래밍에 없어서는 안될 기본 함수 라이브러리이지만 때로는 iconv가 일부 데이터를 트랜스코딩하지 않습니다. 이유가 없습니다. 예를 들어 "—" 문자를 gb2312로 변환하면 오류가 발생합니다.
이 기능의 사용법을 천천히 살펴보겠습니다.
가장 간단한 애플리케이션은 gb2312를 utf-8로 바꿉니다.
$text=iconv("GB2312","UTF-8",$text);
$text=iconv("UTF-8","GB2312",$text)를 사용하는 과정에서 다음과 같은 특수 문자가 발견되면: "—", "." 및 기타 영문 이름의 문자가 있으면 변환이 깨집니다. 이 문자 뒤의 텍스트는 더 이상 변환할 수 없습니다.
이 문제를 해결하려면 다음 코드를 사용하여 해결할 수 있습니다.
$text=iconv("UTF-8","GBK",$text);
읽으신 내용이 맞습니다. 매우 간단합니다. gb2312를 사용하지 말고 GBK로 작성하세요.
또 다른 방법이 있습니다. 두 번째 매개변수에 //IGNORE를 추가하고 오류를 무시하는 방법은 다음과 같습니다.
iconv("UTF-8","GB2312//IGNORE",$data);
이 두 방법 사이에 특별한 비교는 없습니다. 첫 번째 방법(gb2312 대신 GBK)이 더 낫다고 생각합니다.
PHP 매뉴얼의 iconv() 지침:
iconv (PHP 4 >= 4.0.5, PHP 5) iconv – Convert string to requested character encoding Description string iconv ( string in_charset, string out_charset, string str ) Performs a character set conversion on the string str from in_charset to out_charset. Returns the converted string or FALSE on failure. If you append the string //TRANSLIT to out_charset transliteration is activated. This means that when a character can't be represented in the target charset, it can be approximated through one or several similarly looking characters. If you append the string //IGNORE, characters that cannot be represented in the target charset are silently discarded. Otherwise, str is cut from the first illegal character.
이 함수를 사용하여 문자열 인코딩을 변환할 때 utf-8을 gb2312로 변환하면 문자열이 잘릴 수 있다는 점에 유의해야 합니다. 이때 다음 방법을 사용하여 해결할 수 있습니다.
$str=iconv('utf-8',"gb2312//TRANSLIT",file_get_contents($filepath));
즉, 두 번째 매개변수에 빨간색 부분을 추가합니다. 즉, 대상 인코딩에서 소스 인코딩과 일치하는 문자가 발견되지 않으면 유사한 문자가 검색됩니다. 변환을 위해 선택되었습니다. 여기서 //IGNORE 매개변수를 사용하여 변환할 수 없는 문자를 무시할 수도 있습니다.
ignore는 변환 중 오류를 무시한다는 의미입니다. 무시 매개변수가 없으면 이 문자 뒤에 오는 모든 문자열을 저장할 수 없습니다.
iconv는 php의 기본 기능은 아니며, 기본적으로 설치되는 모듈이기도 합니다. 사용하기 전에 설치해야 합니다.
windows2000+php인 경우 php.ini 파일을 수정하고 확장명=php_iconv.dll 앞에 있는 ";"을 제거해야 합니다. 동시에 원본 PHP 설치 파일에 있는 iconv.dll을 복사해야 합니다. winnt/system32(dll이 이 디렉토리를 가리키는 경우) Linux 환경에서는 정적 설치를 사용하여 구성 시 --with-iconv 항목을 추가하면 됩니다. iconv 항목은 phpinfo에서 확인할 수 있습니다. (리눅스7.3+아파치4.06+php4.3.2).
mb_convert_encoding 및 iconv 함수 소개
mb_convert_encoding 이 함수는 인코딩을 변환하는 데 사용됩니다. 예전에는 프로그램 코딩의 개념을 이해하지 못했는데 이제는 조금 이해가 된 것 같습니다. 그러나 영어에는 일반적으로 인코딩 문제가 없으며 중국어 데이터에만 이 문제가 있습니다. 예를 들어, Zend Studio 또는 Editplus를 사용하여 프로그램을 작성할 때 gbk 인코딩을 사용합니다. 데이터를 데이터베이스에 입력해야 하고 데이터베이스 인코딩이 utf8이면 데이터를 인코딩하고 변환해야 합니다. 데이터베이스에 들어갈 때 깨집니다.
Make a GBK To UTF-8:
<?php header("content-Type: text/html; charset=Utf-8"); echo mb_convert_encoding("妳係我的友仔", "UTF-8", "GBK"); ?>
그리고 GB2312 to Big5:
<?php header("content-Type: text/html; charset=big5"); echo mb_convert_encoding("你是我的朋友", "big5", "GB2312"); ?>
하지만 위 기능을 사용하려면 설치가 필요하지만 먼저 mbstring 확장 라이브러리를 활성화해야 합니다.
string mb_convert_encoding(문자열 str, string to_encoding [, mix from_encoding]) php.ini에서 먼저 mbstring 확장 라이브러리를 활성화해야 합니다. mb_convert_encoding은 이전 항목을 제거합니다. 내용은 자동으로 인식되지만 실행 효율성은 iconv보다 훨씬 낮습니다.
string iconv (string in_charset, string out_charset, string str) 참고: 변환할 인코딩을 지정하는 것 외에도 두 번째 매개변수는 두 개의 접미사 ://TRANSLIT 및 //IGNORE를 추가할 수도 있습니다. 여기서 //TRANSLIT는 직접 변환할 수 없는 문자를 하나 이상의 대략적인 문자로 자동 변환하고, //IGNORE는 변환할 수 없는 문자를 무시하며, 기본값은 효과는 첫 번째 잘못된 문자 잘림부터 시작됩니다.
일반적으로 iconv를 사용하세요. 원본 인코딩이 무엇인지 알 수 없거나 변환 후 iconv가 정상적으로 표시되지 않는 경우에만 mb_convert_encoding 함수를 사용하세요.
$content = iconv("GBK", "UTF-8″, $content); $content = mb_convert_encoding($content, "UTF-8″, "
추천 학습: "PHP 비디오 튜토리얼"
위 내용은 잘못된 PHP 문자열을 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!