>  기사  >  백엔드 개발  >  PHP_php 기술의 iconv 기능 지식 요약

PHP_php 기술의 iconv 기능 지식 요약

WBOY
WBOY원래의
2016-05-16 20:11:57962검색

오늘 온라인에서 논문을 수정하던 중 iconv 기능을 만났습니다. 알아보기

header('Content-Type: application/vnd.ms-excel;charset=UTF-8"');
$name=iconv('utf-8', 'gb2312', $data['year'].'年,第'.$data['period'].'期通信录');
header('Content-Disposition: attachment;filename="' . $name . '.xls"');
header('Cache-Control: max-age=0');

이 코드의 의미는 utf-8 형식을 gb2312 형식으로 변환한 후 $name에 할당한다는 것입니다. 이렇게 하면 엑셀 파일 이름을 내보낼 때 $라는 중국어 이름이 됩니다. 이름.
이 기능의 상세하고 확장된 사용법은 다음과 같습니다

iconv("UTF-8","GB2312//IGNORE",$data)

ignore는 변환 중 오류를 무시한다는 의미입니다. 무시 매개변수가 없으면 이 문자 뒤에 오는 모든 문자열을 저장할 수 없습니다.

php5에는 iconv() 함수가 내장되어 있습니다.

예:

 <&#63;php
 echo $str= '你好,这里是卖咖啡!';
 echo '<br />';
 echo iconv('GB2312', 'UTF-8', $str);   //将字符串的编码从GB2312转到UTF-8
 echo '<br />';
 
 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); 

&#63;>

iconv는 PHP의 기본 기능은 아니며, 기본적으로 설치되는 모듈이기도 합니다. 사용하기 전에 설치해야 합니다.

Windows 2000 PHP인 경우 php.ini 파일을 수정하고 확장자=php_iconv.dll 앞에 있는 ";"을 제거해야 합니다. 동시에 원래 PHP 설치 파일에 iconv.dll을 복사해야 합니다. winnt/system32 다음으로(dll이 이 디렉토리를 가리키는 경우)

Linux 환경에서는 정적 설치를 사용하고 구성 시 --with-iconv 항목을 추가하면 phpinfo에서 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-iconv=/usr/local/libiconv/

간단한 사용 예:

<&#63;php 
 echo iconv("gb2312","ISO-8859-1","我们"); 
&#63;>

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로 만들기

< &#63;php 
 header("content-Type: text/html; charset=Utf-8"); 
 echo mb_convert_encoding("妳係我的友仔", "UTF-8", "GBK"); 
&#63;> 

또 다른 GB2312가 Big5로

< &#63;php 
 header("content-Type: text/html; charset=big5"); 
 echo mb_convert_encoding("你是我的朋友", "big5", "GB2312"); 
&#63;> 

단, 위 기능을 사용하려면 먼저 mbstring 확장 라이브러리를 설치하고 활성화해야 합니다.

PHP의 또 다른 함수 iconv는 문자열 인코딩을 변환하는 데 사용되며 해당 기능은 위의 함수와 유사합니다.

아래에 몇 가지 자세한 예가 있습니다.

iconv — Convert string to requested character encoding
(PHP 4 >= 4.0.5, PHP 5)
mb_convert_encoding — Convert character encoding
(PHP 4 >= 4.0.6, PHP 5)

사용법:

string mb_convert_encoding ( string str, string to_encoding [, mix from_encoding] )
먼저 mbstring 확장 라이브러리를 활성화하고 php.ini
에서 Extension=php_mbstring.dll 앞에 있는 ;를 제거해야 합니다. mb_convert_encoding은 여러 입력 인코딩을 지정할 수 있지만 내용을 기반으로 자동으로 식별되지만 실행 효율성은 iconv보다 훨씬 나쁩니다.

문자열 iconv(문자열 in_charset, 문자열 out_charset, 문자열 str)

참고: 변환할 인코딩을 지정하는 것 외에도 두 번째 매개변수는 //TRANSLIT 및 //IGNORE라는 두 개의 접미사를 추가할 수도 있습니다. 여기서 //TRANSLIT는 직접 변환할 수 없는 문자를 하나 이상의 대략적인 문자로 자동 변환합니다. //IGNORE는 변환할 수 없는 문자를 무시하며 기본 효과는 첫 번째 잘못된 문자를 자르는 것입니다.
변환된 문자열을 반환하거나 실패 시 FALSE를 반환합니다.

사용:

"-" 문자를 gb2312로 변환할 때 iconv에서 오류가 발생하는 것으로 확인되었습니다. 무시 매개변수가 없으면 이 문자 뒤에 오는 모든 문자열을 저장할 수 없습니다. 어쨌든 이 "-"는 성공적으로 변환될 수 없으며 출력될 수 없습니다. 게다가 mb_convert_encoding에는 이런 버그가 없습니다.

일반적으로 iconv를 사용합니다. 원본 인코딩이 무엇인지 알 수 없거나 변환 후 iconv가 정상적으로 표시되지 않는 경우에만 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”, “자동”);

예:

php에서 iconv 함수를 사용할 때 쉽게 간과하기 쉬운 매개변수

오늘 캡처한 콘텐츠를 처리할 때 인코딩 변환을 위해 iconv를 사용할 때 결과가 중단되는 것을 발견했습니다. 문자 세트에 문제가 있는 것으로 추측하여 대상에 존재하지 않는 문자를 건너뛰는 방법을 고려했습니다. 매뉴얼을 확인해보니 iconv 함수에 매개변수가 3개만 있는데 작동하지 않는 것 같더라구요. 그러다가 인터넷을 확인해 보니 어떤 분이 가능하다고 했었는데 어떻게 구현하는지 정말 놀랐습니다. 영어 설명에는 대상 코드 끝에 "TRANSLIT"라는 레이블을 추가할 수 있다고 되어 있는 것을 발견했습니다. 어떻게 추가해야 할까요? 알고보니 "//"가 먼저 추가된 것 같은데 정말 우울하네요
프로토타입: $txtContent = iconv("utf-8",'GBK',$txtContent);

특수 매개변수: iconv("UTF-8","GB2312//IGNORE",$data)

두 가지 선택적 보조 매개변수: TRANSLIT 및 IGNORE(여기서 IGNORE는 변환할 수 없는 항목이 발견되면 건너뛰는 것을 의미합니다).

위 내용은 이 글의 전체 내용입니다. 모두 마음에 드셨으면 좋겠습니다.

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