Home > Article > Backend Development > What to do if apache php is garbled?
The solution to Apache php garbled code: first comment out the code in "php.ini"; then change the home directory language to "AddDefaultCharset utf-8"; then change the encoding method of the required folder; finally Just restart apache.
Solution to PHP display garbled characters and apache internal encoding problem
Encoding problem
The default encoding of PHP is utf-8. During the test, for the convenience of not writing the meta tag of the html code, there will be no garbled characters
E:\OpenStudy\www\CSphp
And the help document I downloaded The html version of electronic data requires gb2312 settings
E:\OpenStudy\www\Electronic Books
When starting to configure the server, PHP uses the utf-8 encoding method that is recommended by everyone
[php.ini] default_charset = "UTF-8"
Server root directory:
E:\OpenStudy\www
Related information to be consulted
AddDefaultCharset 指令 说 明 当应答内容是text/plain或text/html时,在HTTP应答头中加入的默认字符集 语 法 AddDefaultCharset On|Off|charset 默认值 AddDefaultCharset Off 作用域 server config, virtual host, directory, .htaccess 覆盖项 FileInfo 状 态 核心(C) 模 块 core
If and only if the response content is text/plain or text/html, this command will add the default value in the HTTP response header. character set. Theoretically this will override the character set specified via the e8e496c15ba93d81f6ea4fe5f55a2244 tag in the document body, but actual behavior usually depends on the user's browser settings. AddDefaultCharset Off will disable this feature. AddDefaultCharset On will enable Apache's internal default character set, iso-8859-1. You can also specify to use another charset from one of the IANA registered character set names. For example:
AddDefaultCharset utf-8
AddDefaultCharset should only be used in the following situations: all text resources use the same certain character set, and it is very troublesome to mark their character sets separately. One such example is adding character set parameters to resources containing dynamic content (such as legacy CGI scripts), which may lead to cross-site scripting attacks by including user-supplied data in the output. But please note: A better solution is to modify or delete these scripts, because setting the default character set will disable the browser's automatic character set detection function.
AddCharset 指令 说明 在给定的文件扩展名与特定的字符集之间建立映射 语法 AddCharset charset extension [extension] ... 作用域 server config, virtual host, directory, .htaccess 覆盖项 FileInfo 状态 基本(B) 模块 mod_mime
The AddCharset directive establishes a mapping between a specific file extension and a specific character set. charset is the MIME character set parameter of the file with extension as the extension. This mapping relationship will be forcibly added to all existing mapping relationships and overwrite all existing extension extension mappings.
AddLanguage ja .ja AddCharset EUC-JP .euc AddCharset ISO-2022-JP .jis AddCharset SHIFT_JIS .sjis
With the above definition, the document xxxx.ja.jis will be regarded as a Japanese document using the character set ISO-2022-JP (the same is true for the document xxxx.jis.ja). In addition to informing the client of the character set encoding of the document so that it can be translated and displayed correctly, the AddCharset directive is also used for content negotiation (selecting one of several documents to return to the user based on the user's preference information).
<Directory> 指令 说 明 封装一组指令,使之仅对文件空间中的某个目录及其子目录生效 语 法 <Directory directory-path> ... </Directory> 作用域 server config, virtual host 状 态 核心(C) 模 块 core
7b799fe73e35dcfdc019b13f54de80e5 and bb15ed4aadeed04b3991578461de0768 are used to encapsulate a set of instructions so that they only take effect on a certain directory and its subdirectories. Any directive that can be used in the "directory" scope can be used. Directory-path can be a full path to a directory, or a wildcard string containing Unix shell matching syntax. In a wildcard string, "?" matches any single character, and "*" matches any sequence of characters. You can also use "[]" to determine character ranges. None of the above wildcard characters can match the "/" character. So 7c1008bdb607a11792067596d259a76e will not match /home/user/public_html, but 40a4b63eece0e093aa00135ef0eac5fb will match correctly. For example:
<Directory /usr/local/httpd/htdocs> Options Indexes FollowSymLinks </Directory>
Be careful when using the directory-path parameters: they must be consistent with the file system path used by Apache to access files. Directives assigned to a specific 7b799fe73e35dcfdc019b13f54de80e5 will not take effect on the same directory file pointed to by a different path, such as a path generated through another symbolic link.
Solution
1. Comment out the code in php.ini
[php.ini] ;default_charset = "UTF-8"
2. Change the home directory language to
AddDefaultCharset utf-8
Change the encoding method of the required folder [E:/OpenStudy/www/Electronic Books]
<Directory "E:/OpenStudy/www/Electronic Books"> AddDefaultCharset gb2312 </Directory>
The modification is completed, restart apache, and you’re done
For more related knowledge, please visit PHP Chinese website!
The above is the detailed content of What to do if apache php is garbled?. For more information, please follow other related articles on the PHP Chinese website!