Apache 웹 서버는 실제로 utf-8을 좋아하지 않는 것 같습니다.

Apache 웹 서버는 실제로 utf-8을 좋아하지 않는 것 같습니다.

이것은 정말 짜증나는 일이므로 여기 누군가가 내가 뭘 잘못하고 있는지 말해 줄 수 있기를 바랍니다. 나는 여가 시간에 하고 있던 일부 프로그래밍을 테스트하기 위해 한동안 Windows 7 랩톱에서 Apache 웹 서버를 실행해 왔습니다. 최근에 내 페이지의 유니코드 문자가 내 브라우저에 올바르게 표시되지 않는 것을 발견했습니다. 나는 많은 무의미한 테스트를 수행했으며 문자가 실제로 올바른 UTF-8로 전송되고 있음을 발견했으며 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">HTML 출력 상단에 문제를 해결하기 위한 줄을 추가했지만 문제를 해결하지 못했습니다. 실제로는 아무것도 하지 않습니다. 그런 다음 HTTP 응답 헤더를 확인하는 데 시간을 투자했고 Apache가 다음을 다시 보내는 것을 확인했습니다.

HTTP/1.1 200 확인
날짜: 2015년 7월 19일 일요일 18:18:40 GMT
서버: Apache/2.2.25(Win32)
전송 인코딩: 청크
콘텐츠 유형: 텍스트/html; 문자셋=iso-8859-1

좋습니다. 꽤 간단한 문제인 것 같습니다. 인터넷에 따르면 AddDefaultCharset utf-8httpd.conf 파일에 추가하면 이 문제를 해결할 수 있다고 합니다. AddDefaultCharset파일 어디에도 줄이 없어서 위에 적힌 대로 정확하게 맨 아래에 추가했습니다. 그런 다음 Apache 서비스를 다시 시작했는데 문제가 변경되지 않은 것으로 나타났습니다. 그래서 Apache를 올바르게 다시 시작하는 방법을 모를 수도 있지만 여전히 문자가 올바르게 표시되지 않고 charset=iso-8859-1헤더가 계속 전송된다는 이론에 따라 컴퓨터를 다시 시작했습니다.

또한 Windows VirtualStore라는 것이 나랑 어울리기 위해 자동으로 다른 곳에 구성 파일을 저장할 수도 있다고 제안하는 웹 사이트를 찾았지만, Apache 파일을 찾을 수 없기 때문에 이런 일이 발생한다고는 생각하지 않습니다. VirtualStore 디렉터리. 또한 폴더의 소유권을 가져와 VirtualStore를 비활성화할 수 있어야 하는데, 다른 방법으로는 아무것도 변경할 수 없기 때문에 얼마 전에 그렇게 했습니다.

안타깝게도 이 문제에 대해 무엇을 더 살펴봐야 할지 모르겠습니다. 누구든지 아이디어가 있나요?

답변1

3줄 HTML 파일을 생성하고 브라우저에서 요청한 후 헤더를 확인해보세요. 이렇게 하면 CGI 헤더나 서버 구성을 방해하는 모든 것이 없도록 보장됩니다.

<html><head><title>Some Test file</title></head>
<body>unicode test äöüÄÖÜß</body>
</html>

charset=utf-8이 파일이 Content-type 헤더의 사양 과 함께 전송될 때까지 서버 구성을 계속 사용해 보세요 .

다음으로 최소한의 Perl 프로그램을 사용해 보십시오:

#!/usr/bin/perl   <-- or omit this line as you're on windows
binmode(STDOUT, ":utf8");
print qq(Content-type: text/html; charset=utf-8

<html><head><title>Some Test file</title></head>
<body>unicode test äöüÄÖÜß</body>
</html>
);

이것이 작동하면(올바른 헤더 전송) 작동하지 않는 다른 항목은 서버 구성이 아니라 라이브러리에 있는 것입니다.

관련 정보