>  기사  >  백엔드 개발  >  PHP에서 파일을 읽을 때 문자가 깨지는 문제를 해결하는 방법

PHP에서 파일을 읽을 때 문자가 깨지는 문제를 해결하는 방법

藏色散人
藏色散人원래의
2020-11-20 09:51:102689검색

PHP에서 읽은 중국어 파일이 깨졌을 때 해결 방법: 먼저 해당 코드 파일을 연 다음 "iconv($encodType, "utf-8", $content); 메서드를 사용하여 중국어 문자가 깨졌을 때 문제를 해결하세요.

PHP에서 파일을 읽을 때 문자가 깨지는 문제를 해결하는 방법

추천: "PHP 비디오 튜토리얼"

PHP는 파일을 읽고 중국어 왜곡 UTF-8

$opts = array(  
'file' => array(  
        'encoding' => "utf-8"  
  )  
);  
$opts = array('http' => array('encoding' => 'utf-8'));  
$ctxt = stream_context_create($opts);  
$content = file_get_contents($filePath, FILE_TEXT, $ctxt);
을 해결합니다

가장 간단한 방법은 GF2312→UTF-8

$str=iconv("gb2312", "utf-8", $str);

작동하지 않습니다

$content
 = mb_convert_encoding(
$content
, 
"UTF-8"
, 
"auto"
);

********************************************에 대해 말씀드리겠습니다 추악한 구분선 위는 좋지 않습니다. 다음은 올바른 방법입니다...하하...**************************** ** ******************************

define('UTF32_BIG_ENDIAN_BOM', chr(0x00) . chr(0x00) . chr(0xFE) . chr(0xFF));  
define('UTF32_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE) . chr(0x00) . chr(0x00));  
define('UTF16_BIG_ENDIAN_BOM', chr(0xFE) . chr(0xFF));  
define('UTF16_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE));  
define('UTF8_BOM', chr(0xEF) . chr(0xBB) . chr(0xBF));  
  
$text = file_get_contents($newPath);  
$first2 = substr($text, 0, 2);  
$first3 = substr($text, 0, 3);  
$first4 = substr($text, 0, 3);  
$encodType = "";  
if ($first3 == UTF8_BOM)  
    $encodType = 'UTF-8 BOM';  
else if ($first4 == UTF32_BIG_ENDIAN_BOM)  
    $encodType = 'UTF-32BE';  
else if ($first4 == UTF32_LITTLE_ENDIAN_BOM)  
    $encodType = 'UTF-32LE';  
else if ($first2 == UTF16_BIG_ENDIAN_BOM)  
    $encodType = 'UTF-16BE';  
else if ($first2 == UTF16_LITTLE_ENDIAN_BOM)  
    $encodType = 'UTF-16LE';  
  
$content = file_get_contents($newPath);  
  
$content = iconv($encodType, "utf-8", $content);

Ultimate Edition·····

$text = file_get_contents($filePath);  
                        //$encodType = mb_detect_encoding($text);  
                        define('UTF32_BIG_ENDIAN_BOM', chr(0x00) . chr(0x00) . chr(0xFE) . chr(0xFF));  
                        define('UTF32_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE) . chr(0x00) . chr(0x00));  
                        define('UTF16_BIG_ENDIAN_BOM', chr(0xFE) . chr(0xFF));  
                        define('UTF16_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE));  
                        define('UTF8_BOM', chr(0xEF) . chr(0xBB) . chr(0xBF));  
                        $first2 = substr($text, 0, 2);  
                        $first3 = substr($text, 0, 3);  
                        $first4 = substr($text, 0, 3);  
                        $encodType = "";  
                        if ($first3 == UTF8_BOM)  
                            $encodType = 'UTF-8 BOM';  
                        else if ($first4 == UTF32_BIG_ENDIAN_BOM)  
                            $encodType = 'UTF-32BE';  
                        else if ($first4 == UTF32_LITTLE_ENDIAN_BOM)  
                            $encodType = 'UTF-32LE';  
                        else if ($first2 == UTF16_BIG_ENDIAN_BOM)  
                            $encodType = 'UTF-16BE';  
                        else if ($first2 == UTF16_LITTLE_ENDIAN_BOM)  
                            $encodType = 'UTF-16LE';  
  
                        //下面的判断主要还是判断ANSI编码的·  
                        if ($encodType == '') {//即默认创建的txt文本-ANSI编码的  
                            $content = iconv("GBK", "UTF-8", $text);  
                        } else if ($encodType == 'UTF-8 BOM') {//本来就是UTF-8不用转换  
                            $content = $text;  
                        } else {//其他的格式都转化为UTF-8就可以了  
                            $content = iconv($encodType, "UTF-8", $text);  
                        }

위의 Ultimate 버전· 중국어 작업 ANSI""""UTF-8""Unicode"`` Windows 시스템에서 생성된 txt 텍스트에 적응할 수 있습니다...

위 내용은 PHP에서 파일을 읽을 때 문자가 깨지는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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