>백엔드 개발 >PHP 튜토리얼 >PHP 중국어가 깨졌습니다.solution_php 기술

PHP 중국어가 깨졌습니다.solution_php 기술

WBOY
WBOY원래의
2016-05-16 20:22:011100검색

깨진 한자는 정말 안타깝습니다. JAVA는 한자를 싫어하고, PHP도 한자를 좋아하지 않습니다.

자바가 왜곡된 코드는 결국 스프링에서 제공하는 필터를 사용하여 필터링되었습니다. 실제로 모든 곳에서 필터링하면 속도에 영향을 주지만 W 국가에서는 먼저 고려하지 않는 것이 있습니다.

PHP에도 왜곡된 문자가 가득할 줄은 몰랐습니다. 형 MySQL을 사용하면 한자가 이렇게 친근해 보일 줄은 몰랐습니다. 하지만 다른 사람들과 상호 작용하기 위해서는 그 때, 제3자 시스템에서 사용하는 GBK 인코딩 때문이었습니다.

야, 바꿔보자

1. PHP 자체 변환 기능인 ICONV

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


데모 사용:

$text = "유로 기호 '?'입니다.";
echo '원본:', $text, PHP_EOL;
echo 'TRANSLIT : ', iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text), PHP_EOL;
echo 'IGNORE : ', iconv("UTF-8", "ISO-8859-1//IGNORE", $text), PHP_EOL;
echo 'Plain : ', iconv("UTF-8", "ISO-8859-1", $text), PHP_EOL;
?>


누구나 추천하는 기능인데 사용후 변환이 안되고 오류도 안나네요

2. 새로운 방법을 찾으려면 모두가 의심하는 또 다른 기능이 비효율적이지만, 어쨌든 먼저 구현하고 나머지 세 가지를 고려하십시오

//기능 사용 가능 여부 확인
echo function_exists('mb_convert_encoding');
//현재 인코딩 감지
echo mb_Detect_encoding($val, "GBK, GB2312, UTF-8");
//인코딩 변환, CP936(즉, GBK)을 UTF-8로 변환
$v=mb_convert_encoding ($val, "UTF-8", "CP936");


결과는 성공적이었습니다

좋습니다. 먼저 데이터베이스 쿼리의 결과 집합을 변환하기 위해 변환 함수를 만들어 보겠습니다.

1. "깨진 적수" 기능:

코드 복사 코드는 다음과 같습니다.

// $fContents 문자열
// $문자열 인코딩
// $to 인코딩으로 변환
함수 auto_charset($fContents,$from='gbk',$to='utf-8'){
$from = strtoupper($from)=='UTF8'? 'utf-8':$from;
$to = strtoupper($to)=='UTF8'? 'utf-8':$to;
If( strtoupper($from) === strtoupper($to) || 비어 있음($fContents) || (is_scalar($fContents) && !is_string($fContents)) ){
​​​​ //인코딩이 동일하거나 문자열 스칼라가 아닌 경우 변환되지 않습니다
          $fContents 반환
}
If(is_string($fContents) ) {
If(function_exists('mb_convert_encoding')){
                 mb_convert_encoding($fContents, $to, $from)을 반환합니다.
         }그 외{
               $fContents 반환;
}
}
​ elseif(is_array($fContents)){
foreach ( $fContents as $key => $val ) {
$ _Key = Auto_Charset ($ 키, $ 보낸 사람, $ 받는 사람)
                $fContents[$_key] = auto_charset($val,$from,$to);
If($key != $_key )
                   unset($fContents[$key]);
}
          $fContents 반환
}
그렇지 않으면{
          $fContents 반환
}
}

2, 사용:

코드 복사 코드는 다음과 같습니다.

//쿼리 결과를 인쇄합니다(결과를 가정)
$arr=배열();
while($list=mssql_fetch_row($row))
{
$arr[]=$list;
}
$s=auto_charset($arr,'gbk','utf-8');
//인쇄를 시도하고 브라우저에서 인코딩을 UFT-8로 설정한 후 깨진 문자가 없는지 확인하세요
print_r($s);die();

위 내용은 PHP의 중국어 왜곡 문자에 대한 기사의 소개입니다. 모두 마음에 드셨으면 좋겠습니다.

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