PHP iconv()함수 문자 인 코딩 변환 문제 설명

php 에서 iconv 함수 라 이브 러 리 는 각종 문자 집합 간 의 변환 을 완성 할 수 있 으 며 php 프로 그래 밍 에서 없어 서 는 안 될 기초 함수 라 이브 러 리 입 니 다.그러나 가끔 은 iconv 가 일부 데이터 에 대해 이유 없 이 적 을 때 가 있다.예 를 들 어 gb 2312 로 문 자 를 바 꿀 때 오류 가 발생 할 수 있 습 니 다.
다음은 이 함수 의 용법 을 천천히 살 펴 보 겠 습 니 다.
가장 간단 한 응용,gb 2312 를 utf-8 로 바 꿉 니 다.

$text=iconv("GB2312","UTF-8",$text);
$text=iconv("UTF-8","GB2312",$text)을 사용 하 는 과정 에서 특별한 문 자 를 만 났 을 때'-',영어 이름 의'.'등 문 자 를 만 났 을 때 전환 이 끊 겼 다.이 문자 들 후의 문 자 는 더 이상 바 꿀 수 없다.
이 문제 에 대해 다음 과 같은 코드 로 실현 할 수 있 습 니 다.

$text=iconv("UTF-8","GBK",$text);
잘못 보지 않 았 습 니 다.이렇게 간단 합 니 다.gb 2312 를 사용 하지 않 고 GBK 로 쓰 면 됩 니 다.
두 번 째 인자 에//IGNORE를 더 해 오 류 를 무시 하 는 방법 도 있 습 니 다.다음 과 같 습 니 다.

iconv("UTF-8","GB2312//IGNORE",$data);
이 두 가지 방법 을 구체 적 으로 비교 하지 않 았 는데 첫 번 째(gb 2312 대신 GBK)방법 이 더 좋 은 것 같 습 니 다.
php 매 뉴 얼 의 iconv()설명:
iconv
(PHP 4 >= 4.0.5, PHP 5)
iconv C 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 을 gb 2312 로 변환 하면 문자열 이 절 단 될 수 있 습 니 다.이때 다음 과 같은 방법 으로 해결 할 수 있다.

$str=iconv('utf-8',"gb2312//TRANSLIT",file_get_contents($filepath));
즉,두 번 째 매개 변수 에 빨간색 글 자 를 추가 하 는 부분 은 대상 인 코딩 에서 원본 인 코딩 과 일치 하 는 문 자 를 찾 지 못 하면 비슷 한 문 자 를 선택 하여 변환 할 것 임 을 나타 낸다.여기 서도 사용 할 수 있 습 니 다:/IGNORE 라 는 인 자 는 변환 할 수 없 는 문 자 를 무시 합 니 다.
ignore 는 변환 할 때의 오 류 를 무시 한 다 는 뜻 입 니 다.ignore 인자 가 없 으 면 모든 문자 뒤의 문자열 을 저장 할 수 없습니다.
iconv 는 php 의 기본 함수 가 아니 라 기본 으로 설 치 된 모듈 입 니 다.설치 해 야 쓸 수 있어 요.
윈도 우즈 2000+php 라면 php.ini 파일 을 수정 할 수 있 습 니 다.extension=phpiconv.dll 앞의";"제거 하 는 동시에 원본 phop 설치 파일 에 있 는 iconv.dll 을 winnt/system 32 로 복사 해 야 합 니 다.(dll 이 이 디 렉 터 리 를 가리 키 고 있다 면)Liux 환경 에서 정적 으로 설치 하 는 방식 으로 configure 에 with-iconv 를 하나 더 추가 하면 됩 니 다.phopinfo 는 iconv 항목 을 볼 수 있 습 니 다.(Linux7.3+Apache4.06+php4.3.2)。
mb_convert_encoding 과 iconv 함수 소개mb_convert_encoding이 함 수 는 인 코딩 을 바 꾸 는 데 쓰 인 다.원래 프로그램 인 코딩 이라는 개념 을 이해 하지 못 했 는데,지금 은 좀 깨 달 은 것 같다.그러나 영 어 는 일반적으로 인 코딩 문제 가 존재 하지 않 고 중국어 데이터 만 이 문제 가 있 을 수 있다.예 를 들 어 Zend Studio 나 Editplus 로 프로그램 을 쓸 때 gbk 인 코딩 을 사용 합 니 다.데이터 베 이 스 를 입력 해 야 하고 데이터 베 이 스 를 utf 8 로 인 코딩 할 때 데 이 터 를 인 코딩 하여 변환 해 야 합 니 다.그렇지 않 으 면 데이터 베 이 스 를 입력 하면 어 지 러 운 코드 가 됩 니 다.
GBK To UTF-8 만 들 기:

<?php 
header("content-Type: text/html; charset=Utf-8"); 
echo mb_convert_encoding("S    ", "UTF-8", "GBK"); 
?>
GB 2312 To Big 5 하나 더 주세요.

<?php 
header("content-Type: text/html; charset=big5"); 
echo mb_convert_encoding("      ", "big5", "GB2312"); 
?>
하지만 위의 함 수 를 사용 하려 면 설치 가 필요 하지만 enable mbstring 확장 라 이브 러 리 가 필요 합 니 다.string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )먼저 enable mbstring 확장 라 이브 러 리 가 필요 합 니 다.php.ini 에서;extension=php_mbstring.dll 앞 에 있 는 것;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″, "
총결산
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.더 많은 내용 을 알 고 싶다 면 아래 링크 를 보 세 요.

좋은 웹페이지 즐겨찾기