Solution to convert php to utf-8 Chinese garbled characters: 1. Add "header("Content-Type: text/html;charset=utf-8");" at the beginning of the code; 2. Convert the file Save as "UTF-8"; 3. Delete the BOM tag.
The operating environment of this tutorial: Windows10 system, PHP8.1 version, DELL G3 computer
php to utf-8 Chinese garbled code What should I do?
Convert PHP page to UTF-8 encoding problem
1. Add a line at the beginning of the code:
header("Content-Type: text/html;charset=utf-8");
2. PHP file encoding problem
Click the editor's menu: "File"->"Save As", you can see the encoding of the current file, make sure the file encoding is: UTF-8,
If it is ANSI, the encoding needs to be changed to: UTF-8.
3. PHP file header BOM problem:
PHP files must not have BOM tags
Otherwise, the session will not be used, and there will be a similar prompt:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent
This is because, when executing session_start(), the entire page cannot be Output, but when the BOM tag exists in the previous PHP page,
PHP treats this BOM tag as output, so an error occurs!
So the PHP page must delete the BOM tag
How to delete this BOM tag:
1. You can open the file with Dreamweaver and resave it, that is, you can remove the BOM tag !
2. You can open the file with EditPlus, and in the menu "Preferences"->"File"->"UTF-8 Identity", set it to: "Always delete signature",
Then save the file and you can remove the BOM tag!
4. UTF-8 encoding problem when PHP saves files as attachments:
When PHP saves files as attachments, the file name must be GB2312 encoded,
Otherwise , if there is Chinese in the file name, it will be garbled:
If your PHP itself is a file in UTF-8 encoding format,
You need to convert the file name variable from UTF-8 Into GB2312:
iconv("UTF-8", "GB2312", "$filename");
5. When the article title is truncated and displayed, garbled characters or "?" question marks appear:
Generally, when the article title is very long, part of the title will be displayed, which will affect the article. The title is truncated,
Since a Chinese character in UTF-8 encoding format will occupy 3 characters of width,
When intercepting the title, sometimes only 1 character of a Chinese character will be intercepted Or 2 characters wide,
is not completely intercepted, and garbled characters or "?" question marks will appear.
Use the following function to intercept the title, and there will be no problem:
function get_brief_str($str, $max_length) { echo strlen($str) ."<br>"; if(strlen($str) > $max_length) { $check_num = 0; for($i=0; $i < $max_length; $i++) { if (ord($str[$i]) > 128) $check_num++; } if($check_num % 3 == 0) $str = substr($str, 0, $max_length)."..."; else if($check_num % 3 == 1) $str = substr($str, 0, $max_length + 2)."..."; else if($check_num % 3 == 2) $str = substr($str, 0, $max_length + 1)."..."; } return $str; }
Recommended learning: "PHP Video Tutorial"
The above is the detailed content of How to convert php to utf-8 Chinese garbled characters. For more information, please follow other related articles on the PHP Chinese website!