목차
回复讨论(解决方案)
백엔드 개발 PHP 튜토리얼 编码问题:明明是utf-8,为何显示响应为gbk呢?

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

Jun 23, 2016 pm 01:55 PM
gbk utf-8 보여주다 코딩

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了呢?从而乱码?


回复讨论(解决方案)

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

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

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



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

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


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

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

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
等,都是可以设置的

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

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

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

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



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

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

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





结论是不言而喻的

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,应该是服务器默认输出的问题了

看完以上的回?,想到一???。
?不?在??目?有?置.htaccess,在.htaccess中?置了default charset呢?





结论是不言而喻的


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

看完以上的回?,想到一???。
?不?在??目?有?置.htaccess,在.htaccess中?置了default charset呢?


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

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,不是什么模板。多谢关注。

不会
.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 了

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



看完以上的回?,想到一???。
?不?在??目?有?置.htaccess,在.htaccess中?置了default charset呢?

现在问题是:所有文件都检查过了(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毛关系都扯不上啊?

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

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

这有覆盖了原有的设置了

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

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

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


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

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

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



一开始在10楼就提出配置问题,微弱的存在感被无视了

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



被?句??了。

?目?,??都是?出??的。因?default charset是gbk,utf8.

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


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



一开始在10楼就提出配置问题,微弱的存在感被无视了


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



被?句??了。

?目?,??都是?出??的。因?default charset是gbk,utf8.

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

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



其他网站没事,12楼就提到js文件响应头就是gbk,utf-8,瞬间可以锁定目标啊~
你们研究半天php脚本和BOM,新人难得蒙对一次 怨念的看着你们
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Windows 11 검색에서 뉴스 및 인기 콘텐츠를 제거하는 방법 Windows 11 검색에서 뉴스 및 인기 콘텐츠를 제거하는 방법 Oct 16, 2023 pm 08:13 PM

Windows 11에서 검색 필드를 클릭하면 검색 인터페이스가 자동으로 확장됩니다. 왼쪽에는 최근 프로그램 목록이 표시되고 오른쪽에는 웹 콘텐츠가 표시됩니다. Microsoft는 여기에 뉴스와 인기 콘텐츠를 표시합니다. 오늘의 확인에서는 Bing의 새로운 DALL-E3 이미지 생성 기능, "Bing과 함께 드래곤 채팅" 제안, 드래곤에 대한 추가 정보, 웹 섹션의 주요 뉴스, 게임 추천 및 인기 검색 섹션을 홍보합니다. 전체 항목 목록은 컴퓨터에서의 활동과 별개입니다. 일부 사용자는 뉴스를 볼 수 있는 기능을 높이 평가할 수도 있지만 이 모든 것은 다른 곳에서도 풍부하게 제공됩니다. 다른 사람들은 이를 직간접적으로 판촉이나 광고로 분류할 수도 있습니다. Microsoft는 자체 콘텐츠를 홍보하기 위해 인터페이스를 사용합니다.

Windows 11 사용자 가이드: 광고 팝업을 비활성화하는 방법 Windows 11 사용자 가이드: 광고 팝업을 비활성화하는 방법 Sep 22, 2023 pm 07:21 PM

Microsoft의 Windows 11 운영 체제는 알림 시스템을 사용하여 주기적으로 제안 사항을 컴퓨터에 팝업으로 표시할 수 있습니다. 원래 사용자에게 Windows 11 워크플로 개선을 위한 팁과 제안을 제공하기 위해 설계된 제안 시스템은 Microsoft 서비스 및 제품을 홍보하기 위한 광고 시스템으로 거의 완전히 변형되었습니다. 제안 팝업은 사용자에게 Microsoft 365 구독을 광고하거나 Android 휴대폰을 장치에 연결하도록 제안하거나 백업 솔루션을 설정할 수 있습니다. 이러한 팝업이 귀찮다면 시스템을 조정하여 팝업을 완전히 비활성화할 수 있습니다. 다음 가이드에서는 Microsoft의 Windows 11 운영 체제를 실행하는 장치에서 팝업을 비활성화하는 방법에 대한 권장 사항을 제공합니다.

데스크탑 레이아웃이 잠기는 이유와 해결 방법 데스크탑 레이아웃이 잠기는 이유와 해결 방법 Feb 19, 2024 pm 06:08 PM

데스크탑 레이아웃이 잠겨 있으면 어떻게 됩니까? 컴퓨터를 사용할 때 데스크탑 레이아웃이 잠기는 상황이 발생할 수 있습니다. 이 문제는 데스크탑 아이콘의 위치를 ​​자유롭게 조정하거나 데스크탑 배경을 변경할 수 없음을 의미합니다. 그렇다면 데스크탑 레이아웃이 잠겨 있다는 메시지가 나타나면 정확히 무슨 일이 일어나고 있는 걸까요? 1. 데스크탑 레이아웃 및 잠금 기능 이해 먼저 데스크탑 레이아웃과 데스크탑 잠금의 두 가지 개념을 이해해야 합니다. 데스크탑 레이아웃이란 바로가기, 폴더, 위젯 등 데스크탑의 다양한 요소를 배열하는 것을 말합니다. 우리는 자유로울 수 있어

지식 그래프: 대형 모델을 위한 이상적인 파트너 지식 그래프: 대형 모델을 위한 이상적인 파트너 Jan 29, 2024 am 09:21 AM

LLM(대형 언어 모델)은 매끄럽고 일관된 텍스트를 생성하는 기능을 갖추고 있어 인공 지능 대화 및 창의적 글쓰기와 같은 영역에 새로운 전망을 제시합니다. 그러나 LLM에는 몇 가지 주요 제한 사항도 있습니다. 첫째, 그들의 지식은 훈련 데이터에서 인식된 패턴으로 제한되어 있으며 세상에 대한 진정한 이해가 부족합니다. 둘째, 추론 능력이 제한되어 있어 여러 데이터 소스에서 논리적 추론을 하거나 사실을 융합할 수 없습니다. 더 복잡하고 개방형 질문에 직면할 때 LLM의 답변은 "환상"이라고 알려진 터무니없거나 모순될 수 있습니다. 따라서 LLM은 일부 측면에서 매우 유용하지만 복잡한 문제와 실제 상황을 처리할 때 여전히 특정 제한 사항이 있습니다. 이러한 격차를 해소하기 위해 최근 몇 년 동안 검색 증강 생성(RAG) 시스템이 등장했습니다.

Go 언어 인코딩 분석: UTF-8과 GBK 비교 Go 언어 인코딩 분석: UTF-8과 GBK 비교 Mar 28, 2024 pm 01:54 PM

Go 언어 인코딩 분석: UTF-8 대 GBK 비교 Go 언어에서 문자열 인코딩 처리는 일반적인 작업 중 하나입니다. 그중 UTF-8과 GBK는 일반적으로 사용되는 두 가지 문자 인코딩 방법입니다. 이 기사에서는 UTF-8과 GBK를 자세히 비교하고 차이점과 사용법을 논의하며 특정 코드 예제를 첨부합니다. 1. UTF-8 및 GBK UTF-8 소개: UTF-8은 전 세계 거의 모든 언어의 문자를 표현할 수 있는 가변 길이 유니코드 인코딩 방법입니다. UTF-8

몇 가지 일반적인 인코딩 방법 몇 가지 일반적인 인코딩 방법 Oct 24, 2023 am 10:09 AM

일반적인 인코딩 방법에는 ASCII 인코딩, 유니코드 인코딩, UTF-8 인코딩, UTF-16 인코딩, GBK 인코딩 등이 포함됩니다. 자세한 소개: 1. ASCII 인코딩은 7비트 이진수를 사용하여 영어 문자, 숫자, 구두점, 제어 문자 등을 포함하여 128개의 문자를 나타내는 최초의 문자 인코딩 표준입니다. 2. 유니코드 인코딩은 표현하는 데 사용되는 방법입니다. 세상의 모든 문자 각 문자에 고유한 디지털 코드 포인트를 할당하는 문자의 표준 인코딩 방법 3. UTF-8 인코딩 등

원격 데스크톱 연결을 통해 상대방의 작업 표시줄을 표시하는 방법 원격 데스크톱 연결을 통해 상대방의 작업 표시줄을 표시하는 방법 Jan 03, 2024 pm 12:49 PM

원격 데스크톱 연결을 사용하는 사용자가 많습니다. 사용 시 상대방의 작업 표시줄이 표시되지 않는 등 몇 가지 사소한 문제가 발생합니다. 실제로는 상대방의 설정 문제일 가능성이 높습니다. 솔루션. 원격 데스크톱 연결 중에 상대방의 작업 표시줄을 표시하는 방법: 1. 먼저 "설정"을 클릭합니다. 2. 그런 다음 "개인 설정"을 엽니다. 3. 그런 다음 왼쪽에서 "작업 표시줄"을 선택합니다. 4. 그림에서 작업 표시줄 숨기기 옵션을 끕니다.

Linux에서 현재 디렉토리를 확인하는 방법은 무엇입니까? Linux에서 현재 디렉토리를 확인하는 방법은 무엇입니까? Feb 23, 2024 pm 05:54 PM

Linux 시스템에서는 pwd 명령을 사용하여 현재 경로를 표시할 수 있습니다. pwd 명령은 PrintWorkingDirectory의 약어로 현재 작업 디렉터리의 경로를 표시하는 데 사용됩니다. 현재 경로를 표시하려면 터미널에 다음 명령을 입력하십시오. pwd 이 명령을 실행하면 터미널에 /home/user/Documents와 같은 현재 작업 디렉터리의 전체 경로가 표시됩니다. 또한 몇 가지 다른 옵션을 사용하여 pwd 명령의 기능을 향상할 수 있습니다. 예를 들어 -P 옵션은 다음을 표시할 수 있습니다.

See all articles