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.
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 = 'utf-8'; elseif ($first4 == $utf32_big_endian_bom) $icon = 'utf-32be'; elseif ($first4 == $utf32_little_endian_bom) $icon = 'utf-32le'; elseif ($first2 == $utf16_big_endian_bom) $icon = 'utf-16be'; elseif ($first2 == $utf16_little_endian_bom) $icon = 'utf-16le'; else { $icon = 'ascii'; 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!