Apache의 기본 인코딩을 UTF-8로 변경하는 방법은 무엇입니까?


138

호스팅 회사를 사용하고 있으며 파일 index.html이 없으면 디렉토리에 파일을 나열하고 iso-8859-1을 기본 인코딩으로 사용합니다.

서버가 Apache 인 경우 UTF-8을 기본값으로 설정하는 방법이 있습니까?

업데이트 : 또한 실제로 HTML 3.2의 DOCTYPE을 사용하고 있으며 문자 세트가 전혀 없다는 것을 알았습니다. 그래서 인코딩을 설정하지 않습니다. 그러나 UTF-8을 사용하도록 변경하는 방법이 있습니까?

답변:


176

httpd.conf에서 add (또는 이미있는 경우 변경) :

AddDefaultCharset utf-8

6
파일에서 어디에서 이것을 추가합니까?
systemovich

5
@Geoffrey 네. 아직 없으면 어디든지 넣을 수 있습니다. 그러나 나는 일반적으로 여러 가지 이유로 모든 "custom"지시문을 파일의 맨 아래에 두었습니다 (기존 지시문을 무시하고 순서 및 재고 구성에서 변경된 내용을 쉽게 볼 수 있음).
MartinodF

6
AddDefaultCharset utf-8을 .htaccess에 추가하십시오. (httpd.conf에 액세스 할 수없는 경우)
richardwhitney

대소 문자를 구분합니까?
Mike Stoddart

6
이 답변이 2009 년이기 때문에 : 우분투 18에서, 당신은이 구성 변경/etc/apache2/conf-available/charset.conf
WoodrowShigeru

55

이것을 다음에 추가하십시오 .htaccess:

IndexOptions +Charset=UTF-8

또는 관리자 권한이있는 경우 다음을 편집 httpd.conf하고 추가하여 전체적으로 설정할 수 있습니다 .

AddDefaultCharset UTF-8

(당신이 사용할 수 AddDefaultCharset있는 .htaccess도하지만 방법은 아파치가 생성 한 디렉토리 목록에 영향을 미치지 않습니다.)


4
이것은 httpd.conf 파일을 수정하는 것보다 훌륭한 솔루션이며 덜 침습적입니다.
앤드류 스위프트

1
내 서버에서는 .htaccess모든 하위 디렉토리에도 영향을 줄 수 있습니다. 아마도 아파치는 .htaccess웹 사이트 폴더의 루트 디렉토리까지 부모 디렉토리를 찾을 것입니다
nonopolarity

2
예, 이것이 .htaccess모든 서버에서 작동 하는 방식입니다. 모든 하위 디렉토리에도 영향을 미칩니다. 그러나 Apache 생성 디렉토리 목록 페이지는 .htaccess(AFAIK) 를 사용하여 UTF-8로 강제 설정할 수 없습니다 .
Mathias Bynens

9
파일을 통해 서버 전체 설정을 변경하는 .htaccess것은 일반적으로 좋지 않습니다. 서버 설정이 다양한 파일에 분산되면 버그를 추적하기가 더 어려워집니다. 요청한 파일마다 Apache가 디렉토리의 .htaccess파일과 .htaccess상위 디렉토리의 모든 파일 을 읽어야합니다 . .htaccess따라서 디렉토리 별 설정 (예 : 특정 디렉토리에 대한 액세스 금지) 또는 관리자 권한을 얻을 가능성이 전혀없는 경우에만 사용해야합니다.
Robbert

2
투표에 힘 입어 IndexOptions + Charset = UTF-8이 나를 위해 속임수를 썼습니다. 감사합니다!
mTorres

28

참조 AddDefaultCharset 지침 , AddCharset 지침 , 그리고 이 기사를 .

AddDefaultCharset utf-8

그러나 나는 지금 한자를 사용해야합니다. 이전에는 한자를 유니 코드 코드로 변환하여 &#해킹을 사용하여 문서에 포함 시켰습니다 . 그러나 문자가 적은 페이지에만 유용합니다.

파일 이름에 문자셋 정보를 인코딩하면 아파치가이를 기반으로 적절한 인코딩 헤더를 출력합니다. AddCharset아래 줄과 같이 conf 파일 의 줄 덕분에 가능 합니다.

conf/httpd.conf:

AddCharset UTF-8 .utf8

따라서 이름이로 끝나는 파일이 있으면 .html.utf8아파치는 마치 페이지가 UTF-8로 인코딩 된 것처럼 페이지를 제공하고 그에 따라 적절한 문자 인코딩 지시문을 헤더에 덤프합니다.


23

장소 AddDefaultCharset UTF-8/etc/apache2/conf.d/charset. 사실, 이미 존재합니다. 위의 내용을 제거하여 주석 처리를 제거하면됩니다 #.


2
와 같은 파일이 없습니다 /etc/apache2/conf.d/charset. 배포에 따른 사용자 정의 포함 파일입니다. 이 아닌 다른 파일도 마찬가지입니다 httpd.conf.
Evi1M4chine

1
그것은 /etc/apache2/conf-enabled/charset.conf내 배포판 (Ubuntu 16.4)에 있습니다. 또한 작동하지 않았습니다.
Alator

23

htaccess에 다음 줄을 추가하십시오.

AddCharset utf-8 .html .css .php .txt .js

서버의 conf 파일에 액세스 할 수없는 사용자를위한 것입니다. 다른 시도가 실패했을 때 시도하는 것이 하나 더 있습니다.

.htaccess 사용과 관련된 성능 문제까지는 이것을 보지 못했습니다. 내 일반적인 페이지로드 시간은 .htaccess가 있거나없는 150-200mS입니다.

페이지가 올바르게 렌더링되지 않으면 성능이 좋은 것입니다. 대부분의 공유 서버는 사용자가 문자 세트를 추가하기 위해 선호되는 구성 파일에 대한 사용자 액세스를 허용하지 않습니다.


설명 할 수는 없지만이 솔루션 만 효과적입니다. 그래서 큰 +1
Skalár Wag

1
앞에서 @Robbert에서 언급했듯이 아직 .htaccess파일을 사용 하지 않는 경우 지금 시작하지 마십시오. 이것이 나쁜 생각 (tm) 인 성능 및 관리 이유가 있습니다
Signal15

확장자를 포함하지 않으면 AddCharset이 컨텐츠 유형 text / html 및 text / plain에 적용됩니다.
오해

위의 모든 차일드가하지 않은 동안 이것은 나를 위해 일했습니다. +1
Alator

허용되는 답변은 tex / html 및 text / plain에만 영향을줍니다. httpd.apache.org/docs/2.4/mod/core.html#adddefaultcharset
TacoV

10

Apache 구성 (httpd.conf)에 액세스 할 수 있는지 확실하지 않지만 AddDefaultCharset 지시문을 설정할 수 있어야합니다. 보다:

http://httpd.apache.org/docs/2.0/mod/core.html

mod_mime.c 모듈을 찾아서 다음이 설정되어 있는지 확인하십시오.

AddDefaultCharset utf-8 

또는 동등한 Apache 1.x 문서 ( http://httpd.apache.org/docs/1.3/mod/core.html#adddefaultcharset )

그러나 이것은 "응답 컨텐츠 유형이 text / plain 또는 text / html"인 경우에만 작동합니다.

또한 페이지에 문자 세트가 설정되어 있는지 확인해야합니다. 자세한 내용은 다음을 참조하십시오.

http://www.w3.org/TR/REC-html40/charset.html


8

이것은 테스트되지 않았지만 작동합니다.

.htaccess 파일에 다음을 입력하십시오.

<Files ~ "\.html?$">  
     Header set Content-Type "text/html; charset=utf-8"
</Files>

그러나 서버에 mod_headers가 필요합니다.


선택한 솔루션은 그렇지 않은 반면 저에게는 효과적이었습니다. 감사합니다! 사실, 나는 그것을 <Files>태그 로 감쌀 필요조차 없었습니다 .
Geremia

8

완전성을 위해 Ubuntu의 Apache2에서는 conf-available의 charset.conf에 기본 문자 세트가 있습니다.

라인 주석 해제

AddDefaultCharset UTF-8

3

모든 HTML 파일이 UTF-8이고 컨텐츠 유형에 대한 메타 태그가없는 경우 두 가지 지시문을 모두 추가하여 Apache 2.4에서 이러한 파일을 전송하는 데 필요한 기본값 만 설정할 수있었습니다.

AddLanguage ru .html
AddCharset UTF-8 .html

3

utf-8에 긴 파일 이름이있는 경우 힌트 : 기본적으로 파일 이름이 20 바이트로 단축되므로 마지막 문자가 "반으로 잘려서"제대로 인식되지 않을 수 있습니다. 그런 다음 다음을 설정하십시오.

IndexOptions Charset=UTF-8 NameWidth=*

NameWidth 설정하면 파일 이름이 짧아 져서 제대로 표시되고 읽을 수있게됩니다.

다른 사용자가 이미 언급했듯이 httpd.conf또는 apache2.conf관리자 권한이있는 경우 또는 관리자 권한이없는 경우 추가해야합니다 .htaccess.


2

비워 두십시오. 'default_charset' in WHM :::::: default_charset =''

ps-WHM에서 --------) 홈»서비스 구성»PHP 구성 편집기 ----) '고급 모드'를 클릭합니다 ----) 'default_charset'을 찾아서 비워 둡니다 ---- 그냥 utf8 아님, ISO 아님


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.