Home > Article > Backend Development > Encoding issues in PHP web pages_PHP tutorial
Analysis of coding issues of Apache and PHP web pages
Talk about the coding of Apache and PHP web pages. There is also an article about the MySQL character set: http://potatows.eeie.cn/?p=39
When it comes to Apache encoding, we will involve three things
http markup language Tag
header("content-type:text/html; charset=xxx"); function in PHP
AddDefaultCharset
in the Apache configuration file httpd.conf 1. tags
in order, Let’s talk about the tag first. This tag has many functions. Please click here for details.
What I want to say today is just the form mentioned above. Explain , which means to declare this web page and let the browser use xxx encoding for the entire page content. xxx can be GB2312, GBK, UTF-8 (different from MySQL, which is UTF8), etc. Therefore, most pages can use this method to tell the browser what encoding to use when displaying this page, so as to avoid encoding errors and garbled characters. But sometimes we will find that this sentence still doesn't work. No matter which xxx is, the browser always uses the same encoding. I will talk about this later.
Please note that belongs to HTML information and is just a statement. It works to indicate that the server has passed the HTML information to the browser.
2. header("content-type:text/html; charset=xxx");
The function header() is to send the information in the brackets to the http header. For specific usage of this function, please click here.
If the content in the brackets is as mentioned in the article, the function is basically the same as the tag. If you compare it with the first one, you will find that the characters are similar. But the difference is that if there is this function, the browser will always use the xxx encoding you requested and will never be disobedient, so this function is very useful. Why is this happening? Then we have to talk about the difference between HTTPS headers and HTML information:
Quote:
The https header is a string sent by the server before sending HTML information to the browser using the HTTP protocol.
Because the meta tag belongs to html information, the content sent by header() reaches the browser first. The popular point is that header() has a higher priority than meta (I don’t know if I can say this). Add a php page that has both header("content-type:text/html; charset=xxx") and , the browser will only recognize the former http header and not the meta. Of course, this function can only be used within PHP pages.
There is also a question left, why does the former definitely work, but the latter sometimes doesn’t? This is why we want to talk about Apache next.
3. AddDefaultCharset
In the conf folder in the Apache root directory, there is the entire Apache configuration document httpd.conf. For details on how to configure apache, please click here ([url=thread-2674-1-1.html]windows[/url], [url=thread-1381-1-1.html]linux[/url]).
Open httpd.conf with a text editor. Line 708 (may be different in different versions) contains AddDefaultCharset xxx, where xxx is the encoding name. The meaning of this line of code: Set the character set in the https header of the web page file in the entire server to your default xxx character set. Having this line is equivalent to adding a header ("content-type: text/html; charset=xxx") to each file. Now you can understand why the browser always uses gb2312 even though the meta setting is utf-8.
If there is a header("content-type:text/html; charset=xxx") in the web page, the default character set will be changed to the character set you set, so this function will always be useful. If you add a "#" in front of AddDefaultCharset xxx, comment out this sentence, and the page does not contain header ("content-type..."), then it is the meta tag's turn to take effect.
Summary:
Let’s sort
header("content-type:text/html; charset=xxx")
AddDefaultCharset xxx
If you are a web programmer, add a header("content-type:text/ html; charset=xxx"), ensuring that it can be displayed correctly on any server and has strong portability.
As for the sentence AddDefaultCharset xxx, whether it should be commented or not is a matter of opinion. Anyway, I commented it out, but I also need to write header() when writing a page, so that it can be displayed normally on different servers.