mb_convert_encoding iconv 사용법

4384 단어 encoding

function pwConvert($str, $toEncoding, $fromEncoding, $ifMb = true) {
 
if (strtolower($toEncoding) == strtolower($fromEncoding)) {return $str;}
 
is_object($str) && $str = get_object_vars($str);//fixed: object can't convert, by alacner 2010/09/15
 
if (is_array($str)) {
 
foreach ($str as $key => $value) {
 
is_object($value) && $value = get_object_vars($value);
 
$str[$key] = pwConvert($value, $toEncoding, $fromEncoding, $ifMb);
 
}
 
return $str;
 
} else {
 
if (function_exists('mb_convert_encoding') && $ifMb) {
 
return mb_convert_encoding($str, $toEncoding, $fromEncoding);
 
}else{
 
     return iconv ($str, $toEncoding, $fromEncoding);
 
}
 
그룹 변환 방법
 
mb_convert_encoding의 용법은 공식 참조:http://cn.php.net/manual/zh/function.mb-convert-encoding.php 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"); 
?> 

하지만 위의 함수를 사용하려면 설치가 필요하지만 먼저 enable 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(stringstr,stringto_encoding[,mixedfrom_encoding])은 php에서 먼저 enable mbstring 확장 라이브러리를 사용해야 합니다.ini리장;extension=php_mbstring.dll 앞의 것;제거mb_convert_인코딩은 다양한 입력 인코딩을 지정할 수 있으며 내용에 따라 자동으로 식별되지만 실행 효율은 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_인코딩에는 이 버그가 없습니다.일반적인 상황에서 iconv를 사용하는데, 원본 인코딩이 어떤 인코딩인지 확인하지 못하거나 iconv가 전환된 후 정상적으로 표시되지 않을 때만 mb_convert_인코딩 함수. 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에서 mb_ 사용convert_인코딩 디코딩의 작은 함정은 php 프로그램에서 mb_convert_인코딩 () 방법으로 문자 인코딩 변환을 하는 것은 모두가 익숙해졌고 평소에도 대량으로 사용되고 있다.그리고 일반적인 상황에서도 이 방법이 충분히 잘했다는 것은 칭찬할 만하다.그러나 한 항목에서 우리는 그것을 사용하여 UTF8에서 GBK로 변환해야 하는데, 일부 특수 문자를 변환할 때 적지 않은 문제를 발견했다.구체적으로는 mb가 utf8에서 인코딩할 수 있는 문자를 gbk에서 인코딩할 수 없는 문자를 모두\0x00\0x80으로 바꾸어 변환된 gbk 문자에 문제가 있음을 나타낸다.우리의 의식에서 문자 인코딩 변환을 하는 과정에서 목표 인코딩이 표현할 수 없는 문자를 만나면 디코딩 프로그램은 이런 문자를 버려야 한다. 이렇게 하면 일부 데이터를 잃어버리지만 디코딩의 문자 서열을 사용할 수 없게 되지 않는다.mb가 왜 상술한 방식을 사용해야 하는지 모르겠다.임시 해결 방법은 디코딩 후의 문자열 시퀀스를 필터링하여 모든\x00\80 문자를 필터링하는 것입니다.또는 의미를 바꾸기 전에utf8의 문자열을 필터링하여ut8은 표시할 수 있고gbk는 표시할 수 없는 모든 문자를 필터링한다. 실현 난이도에서 첫 번째 필터링 방식은 비교적 쉽다.

좋은 웹페이지 즐겨찾기