PHP에서 iconv 함수를 사용하는 방법
이 글의 내용은 PHP에서 iconv 기능을 사용하는 방법을 소개합니다. 여기에서 공유하겠습니다. 필요한 친구들이 참고할 수 있습니다.
현재 프로그램을 작성 중인데 iconv 기능을 사용하여 캡처해야 합니다. utf-8로 인코딩된 페이지를 gb2312로 변환한 결과 캡처된 데이터가 iconv 기능을 사용하여 트랜스코딩되자마자 데이터가 아무 이유 없이 줄어드는 것을 발견했습니다.
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. PHP를 다시 컴파일하고 컴파일 매개변수 추가--with-iconv=/usr/local/iconv
현재 Windows에서 도둑 프로그램을 작업 중입니다. 캡처된 utf-8 인코딩 페이지를 gb2312로 변환하려면 iconv 함수를 사용해야 합니다. 캡처된 데이터를 트랜스코딩하려면 iconv 함수만 사용하면 됩니다. 아무 이유 없이 적게 변환됩니다. 한동안 우울했습니다. 인터넷에서 정보를 확인한 후 이것이 iconv 기능의 버그라는 것을 알게 되었습니다. iconv는 문자 "—"를 gb2312로 변환할 때 오류를 발생시킵니다.
해결 방법은 매우 간단합니다. 즉, 변환해야 하는 인코딩 뒤에 "//IGNORE"를 추가하면 됩니다. 이는 iconv 함수의 두 번째 매개 변수입니다. 다음은
다음 내용이 인용된 내용입니다.
코드 복사 코드는 다음과 같습니다.
iconv("UTF-8","GB2312//IGNORE",$data)
ignore는 변환 중 오류를 무시한다는 뜻입니다. 무시 매개변수가 없으면 이 문자 뒤에 오는 모든 문자열을 저장할 수 없습니다.
코드 복사 코드는 다음과 같습니다.
<?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); ?>
iconv는 php의 기본 기능이 아니며, 기본적으로 설치되는 모듈이기도 합니다. 사용하기 전에 설치해야 합니다.
windows2000+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 설치
php 컴파일
#./configure --prefix= + 인코딩을 변환하는데 사용됩니다. 예전에는 프로그램 코딩의 개념을 이해하지 못했는데 이제는 조금 이해가 된 것 같습니다.
그러나 일반적으로 영어에는 인코딩 문제가 없으며 중국어 데이터에만 이 문제가 있습니다. 예를 들어, Zend Studio 또는 Editplus를 사용하여 프로그램을 작성할 때 gbk 인코딩을 사용합니다. 데이터를 데이터베이스에 입력해야 하고 데이터베이스 인코딩이 utf8이면 데이터를 인코딩하고 변환해야 합니다. 데이터베이스에 들어갈 때 깨집니다.
mb_convert_encoding의 공식 사용법을 확인하세요: http://cn.php.net/manual/zh/function.mb-convert-encoding.php
<?php
echo iconv("gb2312","ISO-8859-1","我们");
?>
다른 GB2312로 만들기 Big5
< ?php header("content-Type: text/html; charset=Utf-8"); echo mb_convert_encoding("妳係我的友仔", "UTF-8", "GBK"); ?>
하지만 위 기능을 사용하려면 설치가 필요하지만 먼저 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 [, 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 会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断。
Returns the converted string or FALSE on failure.
使用:
发现iconv在转换字符”—”到gb2312时会出错,如果没有ignore参数,所有该字符后面的字符串都无法被保存。不管怎么样,这个”—”都无法转换成功,无法输出。 另外mb_convert_encoding没有这个bug.
一般情况下用 iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding 函数.
from_encoding is specified by character code name before conversion. it can be array or string - comma separated enumerated list. If it is not specified, the internal encoding will be used.
/* Auto detect encoding from JIS, eucjp-win, sjis-win, then convert str to UCS-2LE */
$str = mb_convert_encoding($str, “UCS-2LE”, “JIS, eucjp-win, sjis-win”);
/* “auto” is expanded to “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");
php中使用iconv函数时容易忽略的参数
今天在处理抓取内容的时候,当采用iconv进行编码转换的时候,发现结果会中断,猜是字符集的问题,考虑怎么跳过目标字符集不存在的字符,查手册发现iconv的函数只有三个参数,好像不行,然后查网上有人说可以,但是很奇怪怎么实现,最后发现英文描述有说可以加标识到目标编码后面:“TRANSLIT”,很郁闷怎么加呢?原来是先加“//”,真是郁闷,竟然有这样的设计
原型: $txtContent = iconv("utf-8",'GBK',$txtContent);
特殊参数:iconv("UTF-8","GB2312//IGNORE",$data)
两个可选的辅助参数:TRANSLIT和IGNORE ,(其中IGNORE 就是说遇到无法转换的就跳过)。 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.
相关推荐:
php 通过iconv将字符串从GBK转换为UTF8字符集的方法
위 내용은 PHP에서 iconv 함수를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

이 튜토리얼은 PHP를 사용하여 XML 문서를 효율적으로 처리하는 방법을 보여줍니다. XML (Extensible Markup Language)은 인간의 가독성과 기계 구문 분석을 위해 설계된 다목적 텍스트 기반 마크 업 언어입니다. 일반적으로 데이터 저장 AN에 사용됩니다

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

정적 바인딩 (정적 : :)는 PHP에서 늦은 정적 바인딩 (LSB)을 구현하여 클래스를 정의하는 대신 정적 컨텍스트에서 호출 클래스를 참조 할 수 있습니다. 1) 구문 분석 프로세스는 런타임에 수행됩니다. 2) 상속 관계에서 통화 클래스를 찾아보십시오. 3) 성능 오버 헤드를 가져올 수 있습니다.

문자열은 문자, 숫자 및 기호를 포함하여 일련의 문자입니다. 이 튜토리얼은 다른 방법을 사용하여 PHP의 주어진 문자열의 모음 수를 계산하는 방법을 배웁니다. 영어의 모음은 A, E, I, O, U이며 대문자 또는 소문자 일 수 있습니다. 모음이란 무엇입니까? 모음은 특정 발음을 나타내는 알파벳 문자입니다. 대문자와 소문자를 포함하여 영어에는 5 개의 모음이 있습니다. a, e, i, o, u 예 1 입력 : String = "Tutorialspoint" 출력 : 6 설명하다 문자열의 "Tutorialspoint"의 모음은 u, o, i, a, o, i입니다. 총 6 개의 위안이 있습니다

PHP의 마법 방법은 무엇입니까? PHP의 마법 방법은 다음과 같습니다. 1. \ _ \ _ Construct, 객체를 초기화하는 데 사용됩니다. 2. \ _ \ _ 파괴, 자원을 정리하는 데 사용됩니다. 3. \ _ \ _ 호출, 존재하지 않는 메소드 호출을 처리하십시오. 4. \ _ \ _ get, 동적 속성 액세스를 구현하십시오. 5. \ _ \ _ Set, 동적 속성 설정을 구현하십시오. 이러한 방법은 특정 상황에서 자동으로 호출되어 코드 유연성과 효율성을 향상시킵니다.

PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

PHP는 전자 상거래, 컨텐츠 관리 시스템 및 API 개발에 널리 사용됩니다. 1) 전자 상거래 : 쇼핑 카트 기능 및 지불 처리에 사용됩니다. 2) 컨텐츠 관리 시스템 : 동적 컨텐츠 생성 및 사용자 관리에 사용됩니다. 3) API 개발 : 편안한 API 개발 및 API 보안에 사용됩니다. 성능 최적화 및 모범 사례를 통해 PHP 애플리케이션의 효율성과 유지 보수 성이 향상됩니다.

PHP는 서버 측에서 널리 사용되는 스크립팅 언어이며 특히 웹 개발에 적합합니다. 1.PHP는 HTML을 포함하고 HTTP 요청 및 응답을 처리 할 수 있으며 다양한 데이터베이스를 지원할 수 있습니다. 2.PHP는 강력한 커뮤니티 지원 및 오픈 소스 리소스를 통해 동적 웹 컨텐츠, 프로세스 양식 데이터, 액세스 데이터베이스 등을 생성하는 데 사용됩니다. 3. PHP는 해석 된 언어이며, 실행 프로세스에는 어휘 분석, 문법 분석, 편집 및 실행이 포함됩니다. 4. PHP는 사용자 등록 시스템과 같은 고급 응용 프로그램을 위해 MySQL과 결합 할 수 있습니다. 5. PHP를 디버깅 할 때 error_reporting () 및 var_dump ()와 같은 함수를 사용할 수 있습니다. 6. 캐싱 메커니즘을 사용하여 PHP 코드를 최적화하고 데이터베이스 쿼리를 최적화하며 내장 기능을 사용하십시오. 7
