web-dev-qa-db-ja.com

ApacheのデフォルトエンコーディングをUTF-8に変更する方法は?

私はホスティング会社を使用しており、ファイルindex.htmlが存在しない場合、デフォルトのエンコードとしてiso-8859-1を使用する場合、ディレクトリ内のファイルをリストします。

サーバーがApacheの場合、代わりにデフォルトとしてUTF-8を設定する方法はありますか?

更新:さらに、実際にHTML 3.2のDOCTYPEを使用しており、文字セットがまったくないことがわかったため、エンコードが設定されていません。しかし、UTF-8を使用するように変更する方法はありますか?

129

Httpd.confで追加(または既に存在する場合は変更):

AddDefaultCharset utf-8
162
MartinodF

これを.htaccessに追加します。

IndexOptions +Charset=UTF-8

または、管理者権限がある場合は、httpd.confを編集して追加することでグローバルに設定できます。

AddDefaultCharset UTF-8

.htaccessでもAddDefaultCharsetを使用できますが、Apacheが生成するディレクトリリストには影響しません。)

49
Mathias Bynens

AddDefaultCharset DirectiveAddCharset Directive 、および この記事 を参照してください。

AddDefaultCharset utf-8

しかし、私は時々漢字を使わなければなりません。以前は、中国語の文字をUnicodeコードに変換し、&#ハックを使用してドキュメントに含めました。ただし、数文字のページにのみ役立ちます。

より良い方法があります:ファイル名の文字セット情報をエンコードすると、Apacheはそれに基づいて適切なエンコードヘッダーを出力します。これは、confファイルのAddCharset行(下の行など)のおかげです。

conf/httpd.conf

AddCharset UTF-8 .utf8

したがって、名前が.html.utf8で終わるファイルがある場合、ApacheはページをUTF-8でエンコードされているように提供し、それに応じてヘッダーに適切な文字エンコードディレクティブをダンプします。

24
Eugene Yokota

AddDefaultCharset UTF-8/etc/Apache2/conf.d/charsetに配置します。実際、すでに存在しています。直前の#を削除して、コメントを外すだけです。

22

.htaccessに次の行を追加します。

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

これは、サーバーのconfファイルにアクセスできないユーザー向けです。他の試みが失敗したときに試すことはもう1つです。

.htaccessの使用に関するパフォーマンスの問題に関しては、これを見たことはありません。私の典型的なページ読み込み時間は.htaccessの有無にかかわらず150-200 mSです

ページが正しくレンダリングされない場合のパフォーマンスはどれほど優れていますか。ほとんどの共有サーバーは、文字セットを追加するのに適した設定ファイルへのユーザーアクセスを許可しません。

21
Misunderstood

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
Jon

これはテストされていませんが、おそらく動作します。

.htaccessファイルに次を入力します。

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

ただし、これにはサーバー上のmod_headersが必要です。

7
MiffTheFox

完全を期すために、UbuntuのApache2では、conf-availableのcharset.confにデフォルトの文字セットがあります。

行のコメントを解除します

AddDefaultCharset UTF-8
6
David Glance

すべてのHTMLファイルがUTF-8であり、コンテンツタイプのメタタグがない場合、両方のディレクティブを追加することで、Apache 2.4によって送信されるこれらのファイルに必要なデフォルトのみを設定できました。

AddLanguage ru .html
AddCharset UTF-8 .html
2
Alex

Utf-8に長いファイル名がある場合のヒント:デフォルトでは20バイトに短縮されるため、最後の文字が「半分にカット」されて正しく認識されない場合があります。次に、以下を設定することができます。

IndexOptions Charset=UTF-8 NameWidth=*

NameWidthを設定すると、ファイル名が短くなり、適切に表示されて読みやすくなります。

他のユーザーが既に言及したように、これはhttpd.confまたはApache2.conf(管理者権限がある場合)または.htaccess(ない場合)のいずれかに追加する必要があります。

2
pstryk

空のままにしてください:'default_charset' in WHM :::::: default_charset =''

追伸-WHM go --------)ホーム"サービス構成"PHP構成エディター----)[詳細モード]をクリックします----) 'default_charset'を見つけて空白のままにします----ただ何もしません、utf8ではなく、ISOではありません

1
grrow