Page Properties->Title/Encoding"; then select "Simplified Chinese" in the encoding; then click "Reload" to confirm; and finally re-use the "fgets" function Just read the file."/> Page Properties->Title/Encoding"; then select "Simplified Chinese" in the encoding; then click "Reload" to confirm; and finally re-use the "fgets" function Just read the file.">

Home  >  Article  >  Backend Development  >  How to solve the problem of garbled files read by php fgets

How to solve the problem of garbled files read by php fgets

藏色散人
藏色散人Original
2020-08-01 10:19:154322browse

php fgets garbled solution: first click "Menu Modification->Page Properties->Title/Encoding"; then select "Simplified Chinese" in the encoding; then click "Reload" to confirm ; Finally, reuse the "fgets" function to read the file.

How to solve the problem of garbled files read by php fgets

Recommendation: "PHP Video Tutorial"

Solution to Chinese garbled Chinese characters in php reading txt files

1: If the page you open has garbled characters, don’t worry, don’t do any editing yet, remember

2: Then click the menu to modify-”Page Properties-”Title/Encoding

3: Select Simplified Chinese (gb2321) in the encoding

4: Click Reload-》Confirm

Create a new notepad, not WordPad, and then copy all the files to be read to Save this notepad file, and then use the following code to read the notepad file 1303275.txt. It is found that when the web page is encoded as gb2312, everything is displayed normally. After changing to utf8 encoding, the numbers are normal and the Chinese characters are garbled. This is also normal. .

<?php 
  $file = fopen("1303275.txt","r");//只读方式打开文本文件 
  while(! feof($file))//当文件不结束 
  { 
      $line=fgets($file);//读一行到$line变量 
      echo $line."<br />"; 
  }  
  fclose($file);//关闭文本文件 
 
?>

The above method is cumbersome but it also solves the problem. Below I will provide a solution that will not mess up any txt text. The code is as follows:

/* 
@params $str 输入字符 $type 所需获取编码 
@author 长行 
*/ 
function autoiconv($str,$type = "gb2312//ignore"){ 
 
$utf32_big_endian_bom = chr(0x00) . chr(0x00) . chr(0xfe) . chr(0xff); 
$utf32_little_endian_bom = chr(0xff) . chr(0xfe) . chr(0x00) . chr(0x00); 
$utf16_big_endian_bom = chr(0xfe) . chr(0xff); 
$utf16_little_endian_bom = chr(0xff) . chr(0xfe); 
$utf8_bom = chr(0xef) . chr(0xbb) . chr(0xbf); 
 
$first2 = substr($str, 0, 2); 
$first3 = substr($str, 0, 3); 
$first4 = substr($str, 0, 3); 
 
if ($first3 == $utf8_bom) $icon = &#39;utf-8&#39;; 
elseif ($first4 == $utf32_big_endian_bom) $icon = &#39;utf-32be&#39;; 
elseif ($first4 == $utf32_little_endian_bom) $icon = &#39;utf-32le&#39;; 
elseif ($first2 == $utf16_big_endian_bom) $icon = &#39;utf-16be&#39;; 
elseif ($first2 == $utf16_little_endian_bom) $icon = &#39;utf-16le&#39;; 
else { $icon = &#39;ascii&#39;; return $str;} 
 
return iconv($icon,$type,$str); 
 
}

The above is the detailed content of How to solve the problem of garbled files read by php fgets. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn