首页 > 后端开发 > PHP问题 > apache php乱码怎么办

apache php乱码怎么办

藏色散人
发布: 2023-03-02 06:06:02
原创
2472 人浏览过

apache php乱码的解决办法:首先注释掉“php.ini”中的代码;然后将主目录语言修改为“AddDefaultCharset utf-8”;接着将需要的文件夹更改编码方式;最后重启apache即可。

apache php乱码怎么办

PHP显示乱码和apache内部编码问题的解决

编码问题

PHP默认的编码是utf-8,测试时候为了方便不去写html代码的meta标记也不会出现乱码

 

E:\OpenStudy\www\CSphp
登录后复制

而我下载的帮助文档的html版本电子资料需要的是gb2312的设置

E:\OpenStudy\www\Electronic Books
登录后复制

开始配置服务器的时候,php采用的是大家共同推荐的utf-8的编码方式

[php.ini]
default_charset = "UTF-8"
登录后复制

服务器根目录:

E:\OpenStudy\www
登录后复制

查阅的相关资料

AddDefaultCharset 指令
说   明 当应答内容是text/plain或text/html时,在HTTP应答头中加入的默认字符集
语   法 AddDefaultCharset On|Off|charset
默认值 AddDefaultCharset Off
作用域 server config, virtual host, directory, .htaccess
覆盖项 FileInfo
状   态 核心(C)
模   块 core
登录后复制

当且仅当应答内容是text/plain或text/html时,此指令将会在HTTP应答头中加入的默认字符集。理论上这将覆盖在文档体中通过标签指定的字符集,但是实际的行为通常取决于用户浏览器的设置。AddDefaultCharset Off 将会禁用此功能。AddDefaultCharset On 将启用Apache内部的默认字符集iso-8859-1 。您也可以指定使用在IANA注册过的字符集名字中的另外一个charset 。比如说:

AddDefaultCharset utf-8
登录后复制

AddDefaultCharset只应当在如下情况下使用:所有文本资源都使用同一种确定的字符集,且分别标记他们的字符集非常麻烦。一个这样的例子是向包含动态内容的资源中添加字符集参数(比如先前遗留的CGI脚本),这样可能会因为在输出中包含用户提供的数据而导致跨站点脚本攻击。但是请注意:更好的解决办法是修改或删除这些脚本,因为设置了默认的字符集以后将会使得浏览器的字符集自动探测功能失效。

AddCharset 指令
说明 在给定的文件扩展名与特定的字符集之间建立映射
语法 AddCharset charset extension [extension] ...
作用域 server config, virtual host, directory, .htaccess
覆盖项 FileInfo
状态 基本(B)
模块 mod_mime
登录后复制

AddCharset指令在特定的文件扩展名与特定的字符集之间建立映射。charset是以extension为扩展名的文件的MIME字符集参数。这个映射关系会强制添加在所有现存的映射关系上,并覆盖所有现存的extension扩展名映射。

AddLanguage ja .ja
AddCharset EUC-JP .euc
AddCharset ISO-2022-JP .jis
AddCharset SHIFT_JIS .sjis
登录后复制

有了以上定义以后,文档xxxx.ja.jis会被当成是使用字符集ISO-2022-JP的日文文档(文档xxxx.jis.ja也一样)。AddCharset指令除了用于通知客户端文档的字符集编码方式以便正确地翻译和显示以外,还用于内容协商(根据用户的优先选择信息,从几个文档中选择一个返回给用户)。

<Directory> 指令
说   明 封装一组指令,使之仅对文件空间中的某个目录及其子目录生效
语   法 <Directory directory-path> ... </Directory>
作用域 server config, virtual host
状   态 核心(C)
模   块 core
登录后复制

用于封装一组指令,使之仅对某个目录及其子目录生效。任何可以在"directory"作用域中使用的指令都可以使用。Directory-path可以是一个目录的完整路径,或是包含了Unix shell匹配语法的通配符字符串。在通配符字符串中,"?"匹配任何单个的字符,"*"匹配任何字符序列。您也可以使用"[]"来确定字符范围。以上通配符都不能匹配"/"字符。所以将无法匹配/home/user/public_html ,但能够正确匹配。比如说:

<Directory /usr/local/httpd/htdocs> 
  Options Indexes FollowSymLinks 
</Directory>
登录后复制

使用directory-path参数的时候要注意:它们必须与Apache用于访问文件的文件系统路径保持一致。赋予特定的指令将无法对通过不同路径指向的同一个目录文件生效,比如说通过另外一个符号连接生成的路径。

解决方法

1.注释掉php.ini中的代码

[php.ini]
;default_charset = "UTF-8"
登录后复制

2.将主目录语言修改为

AddDefaultCharset  utf-8
登录后复制

将需要的文件夹【E:/OpenStudy/www/Electronic Books】更改编码方式

<Directory "E:/OpenStudy/www/Electronic Books">
  AddDefaultCharset gb2312
</Directory>
登录后复制

修改完成,重启apache,大功告成

很多相关知识,请访问PHP中文网

以上是apache php乱码怎么办的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板