iconv 함수 라이브러리는 다양한 문자 집합 간의 변환을 완료할 수 있으며 PHP 프로그래밍에 없어서는 안 될 기본 함수 라이브러리입니다.
1. libiconv 함수 라이브러리 http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.2.tar.gz를 다운로드합니다.
2. tar -zxvf libiconv-1.9.2를 압축 해제합니다. .tar.gz;
3. libiconv 설치
#configure --prefix=/usr/local/iconv
#make
#make install
4. -with-ic/local/iconv
Windows에서
현재 도둑 프로그램을 작업 중입니다. 캡처된 utf-8 인코딩 페이지를 gb2312로 변환하려면 iconv 함수를 사용해야 합니다. 변환하려면 iconv 함수를 사용하세요. 캡처된 데이터가 트랜스코딩되면 아무 이유 없이 데이터가 줄어듭니다. 한동안 우울했습니다. 인터넷에서 정보를 확인한 후 이것이 iconv 기능의 버그라는 것을 알게 되었습니다. iconv는 "—" 문자를 gb2312로 변환할 때 오류를 발생시킵니다.
해결 방법은 매우 간단합니다. 즉, 변환해야 하는 인코딩 뒤에 "//IGNORE"를 추가하면 됩니다. 이는 iconv 함수의 두 번째 매개 변수입니다. . "UTF-8","GB2312//IGNORE ",$data)
ignore는 변환 중 오류를 무시한다는 의미입니다. 무시 매개변수가 없으면 이 문자 뒤에 오는 모든 문자열을 저장할 수 없습니다. 코드 복사
코드는 다음과 같습니다.
echo iconv('GB2312', 'UTF-8', $str) //GB2312에서 문자열 인코딩을 변환합니다. UTF- 8 echo '
'; echo iconv_substr($str, 1, 1, 'UTF-8') //바이트 대신 문자 수만큼 자릅니다.print_r( iconv_get_encoding()); //현재 페이지 인코딩 정보를 가져옵니다echo iconv_strlen($str, 'UTF-8') //설정된 인코딩의 문자열 길이를 가져옵니다
$content = iconv("UTF-8","gbk//TRANSLIT",$content)
?>
iconv는 PHP의 기본 기능은 아니며, 기본적으로 설치되는 모듈이기도 합니다. 사용하기 전에 설치해야 합니다.
Windows 2000 PHP인 경우 php.ini 파일을 수정하고 확장자=php_iconv.dll 앞에 있는 ";"을 제거해야 합니다. 동시에 원래 PHP 설치 파일에 iconv.dll을 복사해야 합니다. winnt/system32(dll이 이 디렉터리를 가리키는 경우)
Linux 환경에서는 정적 설치를 사용하고 구성 시 --with-iconv 항목을 추가하여 iconv 항목을 볼 수 있습니다. (Linux7.3 Apache4.06 php4.3.2),
다운로드: ftp://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.8.tar.gz
설치:
#cp libiconv-1.8.tar.gz /usr/local/src
#tar zxvf lib*
#./configure --prefix=/usr/local/libiconv
#make
#make install
php 컴파일
#./configure --prefix=/usr/local/php4.3.2 --with-ic/local/libiconv/
간단한 사용 예:
echo iconv("gb2312","ISO-8859-1","we");
?>
PHP의 mb_convert_encoding 및 iconv 함수 소개
mb_convert_encoding 함수는 인코딩을 변환하는 데 사용됩니다. . 예전에는 프로그램 코딩의 개념을 이해하지 못했는데 이제는 조금 이해가 된 것 같습니다.
그러나 일반적으로 영어에는 인코딩 문제가 없으며 중국어 데이터에만 이 문제가 있습니다. 예를 들어, Zend Studio 또는 Editplus를 사용하여 프로그램을 작성할 때 gbk 인코딩을 사용합니다. 데이터를 데이터베이스에 입력해야 하고 데이터베이스 인코딩이 utf8이면 데이터를 인코딩하고 변환해야 합니다. 데이터베이스에 들어갈 때 깨집니다.
mb_convert_encoding의 공식 사용법을 확인하세요:
http://cn.php.net/manual/zh/function.mb-convert-encoding.php
GBK를 UTF-8로 만들기
< ; ?php
header("content-Type: text/html; charset=Utf-8")
echo mb_convert_encoding("당신은 내 친구입니다", "UTF-8", "GBK")
?>
Big5에 또 다른 GB2312
< ?php
header("content-Type: text/html; charset=big5")
echo mb_convert_encoding("당신은 내 친구입니다. ", "big5", "GB2312");
?>
단, 위 기능을 사용하려면 설치가 필요하지만 먼저 mbstring 확장 라이브러리를 활성화해야 합니다.
PHP의 또 다른 함수 iconv는 문자열 인코딩을 변환하는 데 사용되며 해당 기능은 위의 함수와 유사합니다.
아래에 몇 가지 자세한 예가 있습니다.
iconv — 문자열을 요청된 문자 인코딩으로 변환
(PHP 4 >= 4.0.5, PHP 5)
mb_convert_encoding — 문자 인코딩 변환
( PHP 4 >= 4.0.6, PHP 5)
사용법:
string mb_convert_encoding ( string str, string to_encoding [, mix from_encoding] )
먼저 mbstring 확장 라이브러리를 활성화한 후 변경해야 합니다. php.ini ; 앞에 php_mbstring.dll을 제거합니다. 여러 입력 인코딩을 지정하려면
콘텐츠에 따라 자동으로 식별되지만 실행 효율성은 iconv
string iconv; string in_charset, string out_charset, string str )
참고: 변환할 인코딩을 지정하는 것 외에도 두 번째 매개변수는 //TRANSLIT 및 //IGNORE라는 두 개의 접미사를 추가할 수도 있습니다. 여기서 //TRANSLIT는 자동으로 문자를 변환합니다. 하나 이상의 대략적인 문자로 직접 변환할 수 없는 문자, //IGNORE는 변환할 수 없는 문자를 무시하고 기본 효과는 첫 번째 잘못된 문자를 자르는 것입니다.
실패 시 변환된 문자열을 반환하거나 FALSE를 반환합니다.
사용:
ignore 매개변수가 없으면 문자 "-"를 gb2312로 변환할 때 iconv에서 오류가 발생하는 것으로 나타났습니다. 구원받다. 어쨌든 이 "—"는 성공적으로 변환될 수 없으며 출력될 수 없습니다. 또한 mb_convert_encoding에는 이 버그가 없습니다.
일반적으로 mb_convert_encoding 함수는 원래 인코딩을 확인할 수 없거나
from_encoding으로 지정되지 않은 경우에만 사용됩니다. 변환 전 문자 코드 이름은 배열 또는 문자열일 수 있습니다. 지정하지 않으면 내부 인코딩이 사용됩니다.
/* JIS, eucjp-win, sjis-win, 그런 다음 str을 UCS-2LE로 변환합니다. */
$str = mb_convert_encoding($str, “UCS-2LE”, “JIS, eucjp-win, sjis-win”)
/* “auto”는 다음으로 확장됩니다. “ASCII ,JIS,UTF-8,EUC-JP,SJIS” */
$str = mb_convert_encoding($str, “EUC-JP”, “auto”)
예:
$content = iconv( "GBK", "UTF-8", $content);
$content = mb_convert_encoding($content, "UTF-8", "GBK")
iconv를 사용할 때 간과하기 쉬운 매개변수 PHP의 함수
오늘 캡처한 내용을 처리할 때 인코딩 변환을 위해 iconv를 사용할 때 결과가 중단되는 것을 발견했습니다. 문자 집합에 문제가 있는 것으로 추측하여 존재하지 않는 문자를 건너뛰는 방법을 고려했습니다. 매뉴얼을 확인해보니 iconv의 기능이 3개밖에 없는데 작동하지 않는 것 같더라고요. 그러다가 인터넷에서 확인해 보니 어떤 분이 가능하다고 하셔서 깜짝 놀랐습니다. 마지막으로, 타겟 코드 끝에 "TRANSLIT" 표시를 추가할 수 있다고 되어 있는 것을 발견했습니다. 어떻게 추가해야 할까요? "//"가 먼저 추가된 것으로 밝혀졌는데, 정말 우울한 디자인이네요
Prototype: $txtContent = iconv("utf-8",'GBK',$txtContent)
Special 매개변수: iconv(" UTF-8","GB2312//IGNORE",$data)
두 개의 선택적 보조 매개변수: TRANSLIT 및 IGNORE(여기서 IGNORE는 변환할 수 없는 항목이 발견되면 건너뛰는 것을 의미합니다).설명
string iconv ( string in_charset, string out_charset, string str )
in_charset에서 out_charset으로 문자열 str에 대해 문자 집합 변환을 수행합니다.
문자열을 추가하는 경우 변환된 문자열을 반환합니다. //TRANSLIT to out_charset 음역이 활성화됩니다. 이는 문자가 대상 문자 세트에 표시될 수 없는 경우, //IGNORE라는 문자열을 추가하면 유사하게 보이는 문자 하나 이상을 통해 대략적으로 표시될 수 있음을 의미합니다. 대상 문자 집합에 표시된 문자는 자동으로 삭제됩니다. 그렇지 않으면 첫 번째 잘못된 문자에서 str이 삭제됩니다.
위 내용은 round 함수 사용법과 PHP에서 iconv 함수 사용법을 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.