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

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

藏色散人
Release: 2023-03-03 16:46:02
Original
4492 people have browsed it

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);//关闭文本文件 
 
?>
Copy after login

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); 
 
}
Copy after login

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!

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template