也就是此贴,http://bbs.csdn.net/topics/390807783?page=1#post-397542169
此贴有详细描述。解决此问题人可以得240分。这么个小问题,困扰二三天了,我已经从http底层看了数据包,依然无法解决。
-------------------------------------------------------------------------------------------
无数高手搞不定的(乱码)编码问题:只有在代码放入linux下用chrome访问时才乱码。其它任何情况正常。
windows下任何浏览器下无任何问题。
linux下。只有chrome访问出现乱码。(手工修改chrome编码当然可以正常显示了。)
-----------------------------------
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了呢?从而乱码?
-------------------------
引用 2 楼 changjay 的回复:
换一个编辑器试试,比如记事本或者emeditor之类的
我换了几个编辑器保存了。w3c检查里面有GBK字符。所以将utf-8识别为gbk了。真是奇怪了。无数次另存为转化过。
http://parttime.wengege.com/h/test.html
上面连接也是,在chrome下有乱码(JS引入时有乱码,奇怪的是其它部分乱码好了)。在ie下完全正常。
----------------------------------------------------
现在问题是:所有文件都检查过了(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毛关系都扯不上啊?
回复讨论(解决方案)
也许是apache的配置问题吧,记得apache配置中有字符集的设置的
又来了?
windows下任何浏览器下无任何问题。这话说的太武断!
这是 XP 360极速浏览器的截图
我不否认 IE 中为没有问题
这是因为 IE 有强大的字符集识别功能,完全可以忽视 Content-Type: text/html; charset 的影响
这就是网景倒闭的原因之一。
而那些在网景倒闭时公布的浏览器代码(10余兆c程序)基础上建立起来的各种浏览器,由于微软专利的原因,是无法解决这个问题的
当然这是题外话,不在讨论的序列中
你还是要找到在哪里会有 charset=gbk 的
不要过分相信工具软件,最好手工逐行查找。毕竟配置文件也就哪几个
但也不排除你而外安装了什么插件,造成了这种情况
此问题在我本机上完美重现
只要是login.html保存为utf-8编码无BOM,必定乱码。保存时保留BOM,侧无乱码。用UltraEdit反复测试多次,均如此。
关键是你以前的项目有没有这种情况! 如果没有那就是代码问题,如果也有,那可能是服务端问题、操作系统问题或者压根就是你代码输入的有错误(原先sql语句里错了一个字母,折腾一天,因为觉得自己不能犯小错误,实际上还是犯了!)
没什么实质性的东西,我的一点建议,主要是看看到底是代码原因,还是运行环境的原因!
此问题在我本机上完美重现
只要是login.html保存为utf-8编码无BOM,必定乱码。保存时保留BOM,侧无乱码。用UltraEdit反复测试多次,均如此。
怎么保留BOM 谢谢
检查一下nginx.conf配置文件?有没有gbk?
又来了?
windows下任何浏览器下无任何问题。这话说的太武断!
这是 XP 360极速浏览器的截图
xu大,我感觉楼主指的是windows上的服务器,既然换服务器没事,估计就是nginx哪里的配置或者模块干扰了吧?
此问题在我本机上完美重现
只要是login.html保存为utf-8编码无BOM,必定乱码。保存时保留BOM,侧无乱码。用UltraEdit反复测试多次,均如此。
怎么保留BOM 谢谢
用UltraEdit另存为,格式选 'UTF-8' 是保留,选 'UTF-8 -无BOM' 是不保留。
不要干扰人家的判断
$url = 'http://parttime.wengege.com/h/login.html';$s = file_get_contents($url, false, null, 0, 10);//echo bin2hex($s); //3c21444f435459504520$url = 'http://parttime.wengege.com/h/test.html';$s = file_get_contents($url, false, null, 0, 10);echo bin2hex($s); //efbbbf3c21444f435459
显然
3c21444f435459504520 是没有 BOM 头的
efbbbf3c21444f435459 是有 BOM 头的
BOM 头对于浏览器而言,至多会影响到显示样式,而不会造成乱码
$url = 'http://parttime.wengege.com/Public/js/search.js';
$s = file_get_contents($url, false, null, 0, 10);
echo bin2hex($s); //2f2fe6a0b9e68daee7b1
/Public/js/search.js无BOM头
BOM 头对于浏览器而言,至多会影响到显示样式,而不会造成乱码
这可说不说,服务器返回是gbk,utf8这样的编码,如果没有BOM头来说明,是按gbk显示还是按utf8显示?明显这里是按gbk来显示的。
又来了?
windows下任何浏览器下无任何问题。这话说的太武断!
这是 XP 360极速浏览器的截图
我不否认 IE 中为没有问题
这是因为 IE 有强大的字符集识别功能,完全可以忽视 Content-Type: text/html; charset 的影响
这就是网景倒闭的原因之一。
而那些在网景倒闭时公布的浏览器代码(10余兆c程序)基础上建立起来的各种浏览器,由于微软专利的原因,是无法解决这个问题的
当然这是题外话,不在讨论的序列中
你还是要找到在哪里会有 charset=gbk 的
不要过分相信工具软件,最好手工逐行查找。毕竟配置文件也就哪几个
但也不排除你而外安装了什么插件,造成了这种情况
谢谢你版主。
我的意思是代码在windows下运访问不会有任何问题。
你看到的是在linux下运行的,就是有问题。
ob_start();
header("Content-Type: text/html; charset=gbk,utf8");
echo "测试文本";
ob_flush();
?>
保存为无BOM和有BOM,就会乱码和正常
检查一下nginx.conf配置文件?有没有gbk?
又来了?
windows下任何浏览器下无任何问题。这话说的太武断!
这是 XP 360极速浏览器的截图
xu大,我感觉楼主指的是windows上的服务器,既然换服务器没事,估计就是nginx哪里的配置或者模块干扰了吧?
是的,这位兄弟正解,版主大人,熬夜太多,水平是极高的,但精神恍惚,最近回复 我问题时,理解的和我说的恰好相反。
我讲了很多次是响应,xu大说是请求,还给我列了很例子。.... 我指的windows服务器。他说是windows下访问。我说gbk是自动生成的。他说gbk是我手工设置的。..... 正好和我相反。
也许是apache的配置问题吧,记得apache配置中有字符集的设置的
同样的ngnix配置下,其它项目都没有问题,差不多代码。
经测试,保存为utf-8 +bom 可以解决此问题。但原因何在呢?有人能够解释么?
header("Content-Type: text/html; charset=gbk,utf8");
是发出回应的头
get_headers(url)
得到的 Content-Type: text/html; charset=gbk,utf8
是服务器的响应
我什么时候说过请求啦?
相应的头不是你设置的吗?放在配置文件里自动发出,也是你设置的
我一点都没搞混,而是你自己忙晕了!
你换了服务器就正常了,这恰恰表示了出问题的服务器的配置有问题!
以前的相同的代码,还有其它一些html代码,都是没有bom头的,也没有乱码。
关键是你以前的项目有没有这种情况! 如果没有那就是代码问题,如果也有,那可能是服务端问题、操作系统问题或者压根就是你代码输入的有错误(原先sql语句里错了一个字母,折腾一天,因为觉得自己不能犯小错误,实际上还是犯了!)
没什么实质性的东西,我的一点建议,主要是看看到底是代码原因,还是运行环境的原因!
以前没有这样情况
此问题在我本机上完美重现
只要是login.html保存为utf-8编码无BOM,必定乱码。保存时保留BOM,侧无乱码。用UltraEdit反复测试多次,均如此。
是啊,兄台找到结果了。但原因何在?这也是我想知道的问题。
其实谁也没有找到原因,只是观察到一些现象
Content-Type: text/html; charset= gbk,utf8
这个 gbk 才是真正的原因,只不过你不肯需找他的来源罢了
为什么发出gbk,不在服务器上翻,估计谁也没法说出具体原因。
xuzuning版主正解!
问题原因找到,是nginx此网站配置时使用了charset gbk,utf-8 这样设置了。去掉gbk就ok了。所以乱码解决。
是我在thinkphp网站有一个网友和我碰到同样问题。提醒我上服务器上查看配置文件解决的。
header("Content-Type: text/html; charset=gbk,utf8");
是发出回应的头
get_headers(url)
得到的 Content-Type: text/html; charset=gbk,utf8
是服务器的响应
我什么时候说过请求啦?
相应的头不是你设置的吗?放在配置文件里自动发出,也是你设置的
我一点都没搞混,而是你自己忙晕了!
你换了服务器就正常了,这恰恰表示了出问题的服务器的配置有问题!
谢谢!!!
当然,版主也同时提醒我看服务器上配置文件了。xu大,早点提醒我就好了。
如果是ngix charset ?置??,?甚???folder放就可以呢? ??folder??也是用同一?charset的。所以之前才想是不是有.htaccess影??前folder。就是因???,?我?有?得是default charset?置??。
你说你的文件确实保存的是UTF8,好像每个页面的mate标签是可以设置浏览的编码的,会不会是设置了GBK
或者是后台代码输出的字符是GBK?
你用的是cms么?是不是从gbk转成utf8的
其实我对php不熟悉,也只是猜测 猜测哈

tomodifyDatainAphPessess, startSessionstession_start (), 그런 다음 $ _sessionToset, modify, orremovevariables.

배열은 PHP 세션에 저장할 수 있습니다. 1. 세션을 시작하고 session_start ()를 사용하십시오. 2. 배열을 만들고 $ _session에 저장하십시오. 3. $ _session을 통해 배열을 검색하십시오. 4. 세션 데이터를 최적화하여 성능을 향상시킵니다.

PHP 세션 쓰레기 수집은 만료 된 세션 데이터를 정리하기위한 확률 메커니즘을 통해 트리거됩니다. 1) 구성 파일에서 트리거 확률 및 세션 수명주기를 설정합니다. 2) CRON 작업을 사용하여 고재 응용 프로그램을 최적화 할 수 있습니다. 3) 데이터 손실을 피하기 위해 쓰레기 수집 빈도 및 성능의 균형을 맞춰야합니다.

PHP의 사용자 세션 활동 추적은 세션 관리를 통해 구현됩니다. 1) Session_start ()를 사용하여 세션을 시작하십시오. 2) $ _session 배열을 통해 데이터를 저장하고 액세스하십시오. 3) 세션 _destroy ()를 호출하여 세션을 종료합니다. 세션 추적은 사용자 행동 분석, 보안 모니터링 및 성능 최적화에 사용됩니다.

데이터베이스를 사용하여 PHP 세션 데이터를 저장하면 성능 및 확장 성을 향상시킬 수 있습니다. 1) 세션 데이터를 저장하기 위해 MySQL 구성 : php.ini 또는 php 코드에서 세션 프로세서를 설정하십시오. 2) 사용자 정의 세션 프로세서 구현 : 데이터베이스와 상호 작용하기 위해 열린, 닫기, 읽기, 쓰기 및 기타 기능을 정의합니다. 3) 최적화 및 모범 사례 : 인덱싱, 캐싱, 데이터 압축 및 분산 스토리지를 사용하여 성능을 향상시킵니다.

phpsessionstrackuserdataacrossmultiplepagerequestsususingauniqueIdStoredInAcookie.here'showtomanagetheMeftically : 1) STARTASESSIONSTART_START () andSTAREDATAIN $ _SESSION.2) RegenerATERATESSESSIDIDAFTERLOGINWITHSESSION_RATERATERATES (True) TopreventSES

PHP에서 세션 데이터를 통한 반복은 다음 단계를 통해 달성 할 수 있습니다. 1. Session_start ()를 사용하여 세션을 시작하십시오. 2. $ _session 배열의 모든 키 값 쌍을 통해 Foreach 루프를 통과합니다. 3. 복잡한 데이터 구조를 처리 할 때 is_array () 또는 is_object () 함수를 사용하고 print_r ()를 사용하여 자세한 정보를 출력하십시오. 4. Traversal을 최적화 할 때 페이징을 사용하여 한 번에 많은 양의 데이터를 처리하지 않도록 할 수 있습니다. 이를 통해 실제 프로젝트에서 PHP 세션 데이터를보다 효율적으로 관리하고 사용하는 데 도움이됩니다.

이 세션은 서버 측 상태 관리 메커니즘을 통해 사용자 인증을 인식합니다. 1) 세션 생성 및 고유 ID의 세션 생성, 2) ID는 쿠키를 통해 전달됩니다. 3) ID를 통해 서버 저장 및 세션 데이터에 액세스합니다. 4) 사용자 인증 및 상태 관리가 실현되어 응용 프로그램 보안 및 사용자 경험이 향상됩니다.


핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.
