ApacheのデフォルトのエンコーディングをUTF-8に変更するにはどうすればよいですか?


138

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

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

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

回答:


176

httpd.confに以下を追加します(または、既に存在する場合は変更します)。

AddDefaultCharset utf-8

6
ファイルのどこにこれを追加しますか?
systemovich 2010

5
@ジェフリーはい。まだない場合は、どこにでも配置できます。ただし、通常、すべての「カスタム」ディレクティブをファイルの下部に配置します(既存のディレクティブ、順序を上書きし、ストック構成から何を変更したかを簡単に確認するため)。
MartinodF、2009

6
AddDefaultCharset utf-8を.htaccessに追加しました-私にとっては魅力的でした。(httpd.confにアクセスできない場合)
richardwhitney

大文字と小文字が区別されますか?
Mike Stoddart

6
この回答は2009年からのものです/etc/apache2/conf-available/charset.conf
。Ubuntu18

55

これをあなたに追加してください.htaccess

IndexOptions +Charset=UTF-8

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

AddDefaultCharset UTF-8

(あなたが使用することができますAddDefaultCharsetでは.htaccess、あまりにも、それは仕方というのApache-生成されたディレクトリのリストには影響しません。)


4
これは優れたソリューションであり、httpd.confファイルを変更するよりも侵襲性が低くなります。
Andrew Swift

1
私のサーバーでは、これ.htaccessはすべてのサブディレクトリにも影響する可能性があります。おそらくApacheは.htaccess、ウェブサイトフォルダのルートディレクトリまで親ディレクトリを探します
非極性

2
はい、.htaccessこれがすべてのサーバーで機能する方法です。すべてのサブディレクトリにも影響します。ただし、.htaccess(AFAIK)を使用して、Apacheで生成されたディレクトリ一覧ページを強制的にUTF-8にすることはできません。
Mathias Bynens 2012

9
一般に、ファイルを介してサーバー.htaccess全体の設定を変更することはお勧めできません。サーバー設定がさまざまなファイルに分散されていると、バグの追跡が難しくなります。わずかなパフォーマンスヒットもあります。要求されたファイルごとに、Apacheはディレクトリの.htaccessファイルと.htaccess親ディレクトリのすべてのファイルを読み取る必要があります。.htaccessしたがって、ディレクトリ固有の設定(特定のディレクトリへのアクセスの防止など)または管理者権限を取得する可能性がまったくない場合にのみ使用してください。
Robbert

2
賛成票を集めたIndexOptions + Charset = UTF-8が私にとってはうまくいきました。
mTorres 2013

28

参照はAddDefaultCharset指令AddCharset指令、およびこの記事を

AddDefaultCharset utf-8

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

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

conf/httpd.conf

AddCharset UTF-8 .utf8

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


23

に配置AddDefaultCharset UTF-8/etc/apache2/conf.d/charsetます。実際、すでに存在しています。上記を削除して、コメントを外す必要があり#ます。


2
のようなファイルはありません/etc/apache2/conf.d/charset。これは、ディストリビューションによるカスタムインクルードファイルです。でない他のファイルと同様にhttpd.conf
Evi1M4chine 2015

1
それ/etc/apache2/conf-enabled/charset.confは私のディストリビューション(Ubuntu 16.4)にあります。
アレーター

23

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

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

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

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

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


説明することはできませんが、このソリューションだけが私のために機能します。だからこそ、大きな1
Skalár性Wag

1
以前の@Robbertで述べたように、まだ.htaccessファイルを使用していない場合は、ここで開始しないでください。これが悪い考えである理由とパフォーマンスおよび管理上の理由があります(tm)
Signal15

拡張機能を含めない場合、AddCharsetはコンテンツタイプtext / htmlおよびtext / plainに適用されます。
2015年

これは私にとってはうまくいきましたが、上記の日除けはすべてうまくいきませんでした。+1
アレーター

受け入れられた回答は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>タグで囲む必要もありませんでした。
ジェレミア

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.