아파치 웹 서버에 PHP 웹 사이트가 있습니다. 그 사이트는 수년간 wotrking되었습니다.charset = us-ascii 내 콘텐츠 유형에
몇 주 전에 나는 그 기계를 다시 설치해야했다. 그래서 모든 백업을 확인하고, OS (Gentoo)를 재설치하고 새로운 컴퓨터에서 아파치와 PHP의 같은 버전으로 웹 사이트를 복원했다.
나는 페이지가로드되었고 그다지 많지는 않은 것으로 확인했다. 모든 것이 잘 보였다.
오늘은 그 사이트에 다시 작업을 시작했고, 나는 브라우저에서 출력 코드를 검사 할 때 나는이 발견 :
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
것은 아파치가 UTF-8로 물건을 보내도록 설정되어있다 , php는 utf-8로 디폴트 charset을 가지며, 파일은 모두 utf-8로 저장되고 PHP 코드는 utf-8로 Content-Type을 생성합니다. us-ascii 값은 어디에서 오는가?
코드를 생성하는 PHP에서, 모든 권리
ob_start();
// check the output
var_dump($tmp);exit(__FILE__.' '.__LINE__);
// send the clean HTML document or the raw XML if something went wrong
if ($tmp['final_document'] !== false) {
echo($tmp['final_document']);
} else {
echo($tmp['xml_content']);
}
ob_end_flush();
위해서 var_dump 위, 올바른 콘텐츠 유형과 XHTML 소스를 출력
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
하지만 일반적으로 페이지를 보내는 경우 인코딩은 ascii입니다.
제가 기억하는 한 유일한 변경 사항은 mod_security를 설정하는 것입니다.
확인해야 할 사항은 무엇입니까? 어떤 파일? 어떤 구성입니까?
참고 : 나는 문제가 그와 관련이 있다고 생각하기 때문에 나는 단지 아파치 태그를 포함하고있어
의 위해서 var_dump는 PHP 바로 코드를 생성하는 것을 보여줍니다. 문제가 다른 경우 태그를 적절하게 조정합니다.
상황과 해결책을 반영하여 태그를 업데이트했습니다.
업데이트 - 솔루션 : 제안으로
, 나는이 부분에서 솔루션을 제거하고 대답로했다.
글쎄, 실제로 보내는 콘텐츠에 비 ASCII 문자가 포함되어 있습니까? 해당 컨텐츠 유형은 컨텐츠에 적용되는 자동 휴리스틱 스의 결과 일 수 있습니다. 8 비트 인코딩에서 utf-8로 응용 프로그램을 포팅 할 때 큰 문제가있었습니다. 그러한 경험적 방법의 구현은 종종 '제한적'입니다 ... – arkascha
의견을 주셔서 감사합니다. 예. 페이지의 언어가 스페인어로되어 있습니다. – PatomaS
ASCII 문자가 아닌 문자가 있다고 가정합니다. 그 문자들은 처음 500 자 이내입니까? 그리고 : 내용이 ascii로 전송되면 문자는 어떻게 코딩됩니까? 전송 된 콘텐츠를 파일로 직접 덤프 해보고 (16 진 편집기를 사용하여 콘텐츠를 확인하십시오.) 이것은 내용이 어떤 것으로 변경되었는지 또는 잘못된 값 (whyever)으로 지정된 인코딩 일지를 결정하는 유일한 신뢰할 수있는 방법입니다. – arkascha