PHP writes garbled characters into Notepad
I believe that many people have encountered garbled files when using PHP. Whether to use fwrite or file_put_contents to write. Maybe you will try to solve it by encoding first, but the final result is often not ideal, even though we have converted it to UTF-8 encoding...
So what is the root cause? ? It just lacks the head BOM (of course, this definitely does not refer to the Js BOM).
BOM
Now that BOM is mentioned, some students may not know much about this guy. Let me briefly explain it here. Veterans can skip it. When you use a program such as Notepad to save a text file in UTF-8 format under Windows, Notepad will add a few invisible characters (EF BB BF) in front of the file header, which is the so-called BOM (Byte order Mark). ).
is not limited to files saved in Notepad, as long as the opening of the file contains "EF BB BF" several invisible characters (the hexadecimal should be xEFxBBxBF, visible when editing the file in binary). This is like a convention. When the system sees this thing, it will think that your file is UTF-8 encoded.
This is why when the file does not have a BOM, the file you present to the user may be garbled.
PS: In fact, you can understand BOM as the charset attribute in HTML and the encoding attribute in XML, which serve as an identifier.
Solution:
So how to output BOM in PHP?
The answer is to output before all content is output:
print(chr(0xEF).chr(0xBB).chr(0xBF));
Of course, if you are generating files, there may be two of the following:
fwrite($file, chr(0xEF).chr(0xBB).chr(0xBF)); file_put_contents($file, chr(0xEF).chr(0xBB).chr(0xBF));
Recommended tutorial: PHP video tutorial
The above is the detailed content of php notepad garbled code. For more information, please follow other related articles on the PHP Chinese website!