Home  >  Article  >  Backend Development  >  What to do if apache php is garbled?

What to do if apache php is garbled?

藏色散人
藏色散人Original
2020-07-06 10:45:152403browse

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.

What to do if apache php is garbled?

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn