编码问题:明明是utf-8,为何显示响应为gbk呢?

时间:2022-07-02 10:47:02
http://parttime.wengege.com/h/login.html

响应编码居然为:gbk,utf-8.

HTTP/1.1 200 OK
Server: nginx/1.4.1
Date: Mon, 09 Jun 2014 15:28:28 GMT
Content-Type: text/html; charset=gbk,utf-8
Content-Length: 1843
Last-Modified: Mon, 09 Jun 2014 15:28:16 GMT
Connection: keep-alive
ETag: "5395d290-733"
Accept-Ranges: bytes

此/login.html内容用editplus打开看为utf-8.也已经另存为好几次为utf-8了。

是哪里让浏览器判断是gbk了呢?从而乱码?

27 个解决方案

#1


Content-Type: text/html; charset=gbk,utf-8 ???
有这样做字符集声明的吗?
浏览器如何知道哪些是 gbk 的,哪些是 utf-8 的?

#2


换一个编辑器试试,比如记事本或者emeditor之类的

#3


引用 1 楼 xuzuning 的回复:
Content-Type: text/html; charset=gbk,utf-8 ???
有这样做字符集声明的吗?
浏览器如何知道哪些是 gbk 的,哪些是 utf-8 的?


这也正是我要问的问题。
上面的不是声明,是http响应。

#4


引用 2 楼 changjay 的回复:
换一个编辑器试试,比如记事本或者emeditor之类的

我换了几个编辑器保存了。里面有GBK字符。所以将utf-8识别为gbk了。真是奇怪了。
本人研究编码整整10年了。从来还没有编码搞不定的问题。
上面问题只在linux上出现,windows下无法重现。

#5


而且,我换到其它test目录。则内容完好显示。

#6


http 头中的内容除了状态码都是声明啊
如果你
header('Content-type: text/html;charset=gbk,utf-8');
HTTP 投中就会有 Content-Type: text/html;charset=gbk,utf-8

php.ini 的 default_charset
httpd.conf 的 default_charset
等,都是可以设置的

#7


估计是服务器默认配置了
实在想不出到底哪里有问题

如果同一台服务器上没有能正常显示的代码,那应该是配置问题。
如果有能正常显示的代码 把正常的代码改成这文件相同的内容,不正常看改了那句出问题
改成这个的文本还能正常显示的话用16进制查看器对比一下两个文件

#8


引用 7 楼 cwk44 的回复:
估计是服务器默认配置了
实在想不出到底哪里有问题

如果同一台服务器上没有能正常显示的代码,那应该是配置问题。
如果有能正常显示的代码 把正常的代码改成这文件相同的内容,不正常看改了那句出问题
改成这个的文本还能正常显示的话用16进制查看器对比一下两个文件


我服务器上其它码没有问题。
而且,
我将此文件移动个目录就可以正常访问了。。。。

#9


http://parttime.wengege.com/h/test.html
上面连接也是,在chrome下有乱码(JS引入时有乱码,奇怪的是其它部分乱码好了)。在ie下完全正常。

#10


nginx的配置问题?换apache测试一下?

#11


编码问题:明明是utf-8,为何显示响应为gbk呢?

编码问题:明明是utf-8,为何显示响应为gbk呢?

结论是不言而喻的

#12


login 模板文件是utf-8编码,但php程序header声明或服务器默认配置输出的响应头是gbk, utf-8,就会出现webkit和chrome乱码,而IE正常
test 模板文件本身是gb2312编码,响应头仍然是gbk, utf-8,就会出现9楼的情况

我猜想,webkit和chrome识别编码,响应头优先于DOM中header声明,而IE恰好相反
我看到楼主服务器上的js文件响应头charset都是gbk,utf-8,应该是服务器默认输出的问题了

#13


看完以上的回復,想到一個問題。
會不會在這個目錄有設置.htaccess,在.htaccess中設置了default charset呢?

#14


引用 11 楼 xuzuning 的回复:
编码问题:明明是utf-8,为何显示响应为gbk呢?

编码问题:明明是utf-8,为何显示响应为gbk呢?

结论是不言而喻的

是的,GBK哪来的?关键是GBK哪来的?版主。亲爱的。方向搞错了。我也在思考,GBK到底是从哪来的?
我知道问题出现在GBK上面。GBK是结果,而不是开头。

#15


引用 13 楼 fdipzone 的回复:
看完以上的回復,想到一個問題。
會不會在這個目錄有設置.htaccess,在.htaccess中設置了default charset呢?

昨天就检查过了,没有发现。htaccess文件中有编码问题。

#16


引用 12 楼 wander_wind 的回复:
login 模板文件是utf-8编码,但php程序header声明或服务器默认配置输出的响应头是gbk, utf-8,就会出现webkit和chrome乱码,而IE正常
test 模板文件本身是gb2312编码,响应头仍然是gbk, utf-8,就会出现9楼的情况

我猜想,webkit和chrome识别编码,响应头优先于DOM中header声明,而IE恰好相反
我看到楼主服务器上的js文件响应头charset都是gbk,utf-8,应该是服务器默认输出的问题了

没有找到任何地方有header问题。同时没有login模板。这就是普通的html,不是什么模板。多谢关注。

#17


不会
.htaccess 中
AddDefaultCharset gbk
AddDefaultCharset utf-8
则结果是 Content-Type: text/html; charset=utf-8
即只有最后一条指令有效

倒是,如果
AddDefaultCharset gbk,utf-8
那么就是 Content-Type: text/html; charset=gbk,utf-8 了

于是问题又绕回去了,字符集声明是设定的,而不是内置的



引用 13 楼 fdipzone 的回复:
看完以上的回復,想到一個問題。
會不會在這個目錄有設置.htaccess,在.htaccess中設置了default charset呢?

#18


现在问题是:所有文件都检查过了(css,php,js),确定为utf-8编码。
有几个问题搞不定:
                                   一、普通的html为utf-8编码。http响应居然为gbk,utf-8.所以出现乱码。问题是gbk哪来的?这三个字符哪来的?
我已经全站搜索GBK这三个字符。无获!!!
                                   二、就算html偶尔成功后,但引入js还是乱码。指定引入编码为utf-8.

                                   三、通过w3c烂网站检查,“成功识别”编码依然为  “gbk”.  然后w3c网站无数次崩溃。

                                  真是神奇,检查结果说某行有问题。所有字符我从新打过,还是如此。换个目录的文件thinkphp3.1的登录还是正常。而thinkphp3.2下运行此html就是不正常。关键是这html和thinkphp毛关系都扯不上啊?

#19


你的 js 文件也有 Content-Type: text/html; charset=gbk,utf-8
显然是 web 服务器配置文件里面的事情了
你在服务器配置文件中找 gbk 字样,应该就能找到的

实在不想找的话,就在 .htaccess 中加入
AddDefaultCharset utf-8

这有覆盖了原有的设置了

#20


你保存时选无bom再试试,我抓包发现你的html有bom头

新发现:有bom头居然导致偶的浏览器,选择编码的菜单变灰?

#21


引用 16 楼 potency 的回复:
没有找到任何地方有header问题。同时没有login模板。这就是普通的html,不是什么模板。多谢关注。

html和模板同理啊~我猜测出了2个问题的原因,IE一直坚挺不乱(响应头和DOM编码声明的优先级不同),还有为什么test正文反而不乱了(也许test.html文件是gbk编码而login.html是utf-8),另外你说:我换到其它test目录,则内容完好显示。会不会也是文件变成了gbk编码的原因?至于最关键的为什么响应头有gbk超出我知识范围了,关注学习一下 编码问题:明明是utf-8,为何显示响应为gbk呢?

#22


问题原因找到,是nginx此网站配置时使用了charset gbk,utf-8 这样设置了。去掉gbk就ok了。所以乱码解决。

#23


引用 22 楼 potency 的回复:
问题原因找到,是nginx此网站配置时使用了charset gbk,utf-8 这样设置了。去掉gbk就ok了。所以乱码解决。


编码问题:明明是utf-8,为何显示响应为gbk呢?一开始在10楼就提出配置问题,微弱的存在感被无视了

#24


引用 5 楼 potency 的回复:
而且,我换到其它test目录。则内容完好显示。


被這句誤導了。 编码问题:明明是utf-8,为何显示响应为gbk呢?

換目錄,應該都是會出問題的。因為default charset是gbk,utf8.

#25


亲,你说的nginx配置,太大了。我指的配置是指此虚拟主机的配置。此nginx上有好多个网站,其它没有问题的。

引用 23 楼 wander_wind 的回复:
Quote: 引用 22 楼 potency 的回复:

问题原因找到,是nginx此网站配置时使用了charset gbk,utf-8 这样设置了。去掉gbk就ok了。所以乱码解决。


编码问题:明明是utf-8,为何显示响应为gbk呢?一开始在10楼就提出配置问题,微弱的存在感被无视了

#26


引用 24 楼 fdipzone 的回复:
Quote: 引用 5 楼 potency 的回复:

而且,我换到其它test目录。则内容完好显示。


被這句誤導了。 编码问题:明明是utf-8,为何显示响应为gbk呢?

換目錄,應該都是會出問題的。因為default charset是gbk,utf8.


换目录后,不知道咋加上bom头了,所以可以了。

#27


引用 25 楼 potency 的回复:
亲,你说的nginx配置,太大了。我指的配置是指此虚拟主机的配置。此nginx上有好多个网站,其它没有问题的。


其他网站没事,12楼就提到js文件响应头就是gbk,utf-8,瞬间可以锁定目标啊~
编码问题:明明是utf-8,为何显示响应为gbk呢?你们研究半天php脚本和BOM,新人难得蒙对一次 怨念的看着你们

#1


Content-Type: text/html; charset=gbk,utf-8 ???
有这样做字符集声明的吗?
浏览器如何知道哪些是 gbk 的,哪些是 utf-8 的?

#2


换一个编辑器试试,比如记事本或者emeditor之类的

#3


引用 1 楼 xuzuning 的回复:
Content-Type: text/html; charset=gbk,utf-8 ???
有这样做字符集声明的吗?
浏览器如何知道哪些是 gbk 的,哪些是 utf-8 的?


这也正是我要问的问题。
上面的不是声明,是http响应。

#4


引用 2 楼 changjay 的回复:
换一个编辑器试试,比如记事本或者emeditor之类的

我换了几个编辑器保存了。里面有GBK字符。所以将utf-8识别为gbk了。真是奇怪了。
本人研究编码整整10年了。从来还没有编码搞不定的问题。
上面问题只在linux上出现,windows下无法重现。

#5


而且,我换到其它test目录。则内容完好显示。

#6


http 头中的内容除了状态码都是声明啊
如果你
header('Content-type: text/html;charset=gbk,utf-8');
HTTP 投中就会有 Content-Type: text/html;charset=gbk,utf-8

php.ini 的 default_charset
httpd.conf 的 default_charset
等,都是可以设置的

#7


估计是服务器默认配置了
实在想不出到底哪里有问题

如果同一台服务器上没有能正常显示的代码,那应该是配置问题。
如果有能正常显示的代码 把正常的代码改成这文件相同的内容,不正常看改了那句出问题
改成这个的文本还能正常显示的话用16进制查看器对比一下两个文件

#8


引用 7 楼 cwk44 的回复:
估计是服务器默认配置了
实在想不出到底哪里有问题

如果同一台服务器上没有能正常显示的代码,那应该是配置问题。
如果有能正常显示的代码 把正常的代码改成这文件相同的内容,不正常看改了那句出问题
改成这个的文本还能正常显示的话用16进制查看器对比一下两个文件


我服务器上其它码没有问题。
而且,
我将此文件移动个目录就可以正常访问了。。。。

#9


http://parttime.wengege.com/h/test.html
上面连接也是,在chrome下有乱码(JS引入时有乱码,奇怪的是其它部分乱码好了)。在ie下完全正常。

#10


nginx的配置问题?换apache测试一下?

#11


编码问题:明明是utf-8,为何显示响应为gbk呢?

编码问题:明明是utf-8,为何显示响应为gbk呢?

结论是不言而喻的

#12


login 模板文件是utf-8编码,但php程序header声明或服务器默认配置输出的响应头是gbk, utf-8,就会出现webkit和chrome乱码,而IE正常
test 模板文件本身是gb2312编码,响应头仍然是gbk, utf-8,就会出现9楼的情况

我猜想,webkit和chrome识别编码,响应头优先于DOM中header声明,而IE恰好相反
我看到楼主服务器上的js文件响应头charset都是gbk,utf-8,应该是服务器默认输出的问题了

#13


看完以上的回復,想到一個問題。
會不會在這個目錄有設置.htaccess,在.htaccess中設置了default charset呢?

#14


引用 11 楼 xuzuning 的回复:
编码问题:明明是utf-8,为何显示响应为gbk呢?

编码问题:明明是utf-8,为何显示响应为gbk呢?

结论是不言而喻的

是的,GBK哪来的?关键是GBK哪来的?版主。亲爱的。方向搞错了。我也在思考,GBK到底是从哪来的?
我知道问题出现在GBK上面。GBK是结果,而不是开头。

#15


引用 13 楼 fdipzone 的回复:
看完以上的回復,想到一個問題。
會不會在這個目錄有設置.htaccess,在.htaccess中設置了default charset呢?

昨天就检查过了,没有发现。htaccess文件中有编码问题。

#16


引用 12 楼 wander_wind 的回复:
login 模板文件是utf-8编码,但php程序header声明或服务器默认配置输出的响应头是gbk, utf-8,就会出现webkit和chrome乱码,而IE正常
test 模板文件本身是gb2312编码,响应头仍然是gbk, utf-8,就会出现9楼的情况

我猜想,webkit和chrome识别编码,响应头优先于DOM中header声明,而IE恰好相反
我看到楼主服务器上的js文件响应头charset都是gbk,utf-8,应该是服务器默认输出的问题了

没有找到任何地方有header问题。同时没有login模板。这就是普通的html,不是什么模板。多谢关注。

#17


不会
.htaccess 中
AddDefaultCharset gbk
AddDefaultCharset utf-8
则结果是 Content-Type: text/html; charset=utf-8
即只有最后一条指令有效

倒是,如果
AddDefaultCharset gbk,utf-8
那么就是 Content-Type: text/html; charset=gbk,utf-8 了

于是问题又绕回去了,字符集声明是设定的,而不是内置的



引用 13 楼 fdipzone 的回复:
看完以上的回復,想到一個問題。
會不會在這個目錄有設置.htaccess,在.htaccess中設置了default charset呢?

#18


现在问题是:所有文件都检查过了(css,php,js),确定为utf-8编码。
有几个问题搞不定:
                                   一、普通的html为utf-8编码。http响应居然为gbk,utf-8.所以出现乱码。问题是gbk哪来的?这三个字符哪来的?
我已经全站搜索GBK这三个字符。无获!!!
                                   二、就算html偶尔成功后,但引入js还是乱码。指定引入编码为utf-8.

                                   三、通过w3c烂网站检查,“成功识别”编码依然为  “gbk”.  然后w3c网站无数次崩溃。

                                  真是神奇,检查结果说某行有问题。所有字符我从新打过,还是如此。换个目录的文件thinkphp3.1的登录还是正常。而thinkphp3.2下运行此html就是不正常。关键是这html和thinkphp毛关系都扯不上啊?

#19


你的 js 文件也有 Content-Type: text/html; charset=gbk,utf-8
显然是 web 服务器配置文件里面的事情了
你在服务器配置文件中找 gbk 字样,应该就能找到的

实在不想找的话,就在 .htaccess 中加入
AddDefaultCharset utf-8

这有覆盖了原有的设置了

#20


你保存时选无bom再试试,我抓包发现你的html有bom头

新发现:有bom头居然导致偶的浏览器,选择编码的菜单变灰?

#21


引用 16 楼 potency 的回复:
没有找到任何地方有header问题。同时没有login模板。这就是普通的html,不是什么模板。多谢关注。

html和模板同理啊~我猜测出了2个问题的原因,IE一直坚挺不乱(响应头和DOM编码声明的优先级不同),还有为什么test正文反而不乱了(也许test.html文件是gbk编码而login.html是utf-8),另外你说:我换到其它test目录,则内容完好显示。会不会也是文件变成了gbk编码的原因?至于最关键的为什么响应头有gbk超出我知识范围了,关注学习一下 编码问题:明明是utf-8,为何显示响应为gbk呢?

#22


问题原因找到,是nginx此网站配置时使用了charset gbk,utf-8 这样设置了。去掉gbk就ok了。所以乱码解决。

#23


引用 22 楼 potency 的回复:
问题原因找到,是nginx此网站配置时使用了charset gbk,utf-8 这样设置了。去掉gbk就ok了。所以乱码解决。


编码问题:明明是utf-8,为何显示响应为gbk呢?一开始在10楼就提出配置问题,微弱的存在感被无视了

#24


引用 5 楼 potency 的回复:
而且,我换到其它test目录。则内容完好显示。


被這句誤導了。 编码问题:明明是utf-8,为何显示响应为gbk呢?

換目錄,應該都是會出問題的。因為default charset是gbk,utf8.

#25


亲,你说的nginx配置,太大了。我指的配置是指此虚拟主机的配置。此nginx上有好多个网站,其它没有问题的。

引用 23 楼 wander_wind 的回复:
Quote: 引用 22 楼 potency 的回复:

问题原因找到,是nginx此网站配置时使用了charset gbk,utf-8 这样设置了。去掉gbk就ok了。所以乱码解决。


编码问题:明明是utf-8,为何显示响应为gbk呢?一开始在10楼就提出配置问题,微弱的存在感被无视了

#26


引用 24 楼 fdipzone 的回复:
Quote: 引用 5 楼 potency 的回复:

而且,我换到其它test目录。则内容完好显示。


被這句誤導了。 编码问题:明明是utf-8,为何显示响应为gbk呢?

換目錄,應該都是會出問題的。因為default charset是gbk,utf8.


换目录后,不知道咋加上bom头了,所以可以了。

#27


引用 25 楼 potency 的回复:
亲,你说的nginx配置,太大了。我指的配置是指此虚拟主机的配置。此nginx上有好多个网站,其它没有问题的。


其他网站没事,12楼就提到js文件响应头就是gbk,utf-8,瞬间可以锁定目标啊~
编码问题:明明是utf-8,为何显示响应为gbk呢?你们研究半天php脚本和BOM,新人难得蒙对一次 怨念的看着你们