wake-up-neo.com

Wie ändere ich die Standardkodierung in UTF-8 für Apache?

Ich verwende ein Hosting-Unternehmen und es listet die Dateien in einem Verzeichnis auf, wenn die Datei index.html ist nicht vorhanden, es wird ISO-8859-1 als Standardkodierung verwendet.

Wenn der Server Apache ist, gibt es eine Möglichkeit, stattdessen UTF-8 als Standard festzulegen?

Update: Zusätzlich habe ich herausgefunden, dass es tatsächlich einen DOCTYPE von HTML 3.2 verwendet und es dann überhaupt keinen Zeichensatz gibt ... es wird also keine Kodierung festgelegt. Aber gibt es eine Möglichkeit, es zu ändern, um UTF-8 zu verwenden?

129

In httpd.conf hinzufügen (oder ändern, wenn es schon da ist):

AddDefaultCharset utf-8
163
MartinodF

Fügen Sie dies zu Ihrem .htaccess Hinzu:

IndexOptions +Charset=UTF-8

Wenn Sie über Administratorrechte verfügen, können Sie diese auch global festlegen, indem Sie httpd.conf Bearbeiten und Folgendes hinzufügen:

AddDefaultCharset UTF-8

(Sie können AddDefaultCharset auch in .htaccess Verwenden, dies hat jedoch keine Auswirkungen auf von Apache generierte Verzeichnislisten.)

49
Mathias Bynens

Siehe AddDefaultCharset-Direktive , AddCharset-Direktive und dieser Artikel .

AddDefaultCharset utf-8

Aber ich muss ab und zu chinesische Schriftzeichen verwenden. Zuvor übersetzte ich chinesische Zeichen in Unicode-Code und fügte ihn mit dem Hack &# In das Dokument ein. Dies ist jedoch nur für Seiten mit wenigen Zeichen sinnvoll.

Es gibt eine bessere Möglichkeit, dies zu tun: Kodieren Sie die Zeichensatzinformationen im Dateinamen, und Apache gibt darauf basierend den richtigen Kodierungsheader aus. Dies ist dank der AddCharset -Zeilen in der conf-Datei möglich, z. B. der folgenden Zeile:

conf/httpd.conf:

AddCharset UTF-8 .utf8

Wenn Sie also eine Datei haben, deren Name auf .html.utf8 Endet, bedient Apache die Seite so, als ob sie in UTF-8 codiert wäre, und gibt die entsprechende Zeichencodierungsanweisung im Header aus.

24
Eugene Yokota

In .htaccess füge diese Zeile hinzu:

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

Dies ist für diejenigen gedacht, die keinen Zugriff auf die conf-Datei ihres Servers haben. Es ist nur noch eine Sache zu versuchen, wenn andere Versuche fehlschlagen.

Soweit Performance-Probleme in Bezug auf die Verwendung von .htaccess habe ich dies nicht gesehen. Meine typischen Ladezeiten für Seiten betragen 150-200 mS mit oder ohne .htaccess

Was nützt die Leistung, wenn Ihre Seite nicht richtig gerendert wird? Die meisten freigegebenen Server erlauben dem Benutzer keinen Zugriff auf die Konfigurationsdatei, die der bevorzugte Ort zum Hinzufügen eines Zeichensatzes ist.

22
Misunderstood

Fügen Sie AddDefaultCharset UTF-8 In /etc/Apache2/conf.d/charset Ein. Tatsächlich ist es schon da. Sie müssen es nur auskommentieren, indem Sie das vorangestellte # Entfernen.

21

Ich bin nicht sicher, ob Sie Zugriff auf die Apache-Konfiguration (httpd.conf) haben, aber Sie sollten in der Lage sein, eine AddDefaultCharset-Direktive festzulegen. Sehen:

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

Suchen Sie nach dem Modul mod_mime.c und stellen Sie sicher, dass Folgendes festgelegt ist:

AddDefaultCharset utf-8 

oder die entsprechenden Apache 1.x-Dokumente ( http://httpd.Apache.org/docs/1.3/mod/core.html#adddefaultcharset ).

Dies funktioniert jedoch nur, wenn "der Inhaltstyp der Antwort" text/plain "oder" text/html "ist.

Sie sollten auch sicherstellen, dass auf Ihren Seiten ein Zeichensatz festgelegt ist. Weitere Informationen finden Sie hier:

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

8
Jon

Dies ist ungetestet, wird aber wahrscheinlich funktionieren.

In Ihre .htaccess-Datei schreiben Sie:

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

Dies erfordert jedoch mod_headers auf dem Server.

7
MiffTheFox

Der Vollständigkeit halber finden Sie unter Apache2 unter Ubuntu den Standard-Zeichensatz in der Datei charset.conf in conf-available.

Kommentiere die Zeile aus

AddDefaultCharset UTF-8
6
David Glance

Wo alle HTML-Dateien in UTF-8 sind und keine Meta-Tags für den Inhaltstyp haben, konnte ich nur die erforderlichen Standardeinstellungen für diese Dateien festlegen, die von Apache 2.4 gesendet werden sollen, indem ich beide Anweisungen hinzufügte:

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

Nur ein Hinweis, wenn Sie lange Dateinamen in utf-8 haben: Standardmäßig werden sie auf 20 Bytes gekürzt, sodass es vorkommen kann, dass das letzte Zeichen "halbiert" und daher nicht richtig erkannt wird. Dann möchten Sie vielleicht Folgendes einstellen:

IndexOptions Charset=UTF-8 NameWidth=*

Die Einstellung NameWidth verhindert, dass Ihre Dateinamen gekürzt, richtig angezeigt und lesbar werden.

Wie andere Benutzer bereits erwähnt haben, sollte dies entweder in httpd.conf oder Apache2.conf (wenn Sie Administratorrechte haben) oder in .htaccess (falls nicht).

2
pstryk

Lass es einfach leer: 'default_charset' in WHM :::::: default_charset =''

p.s. - In WHM gehen --------) Startseite "Dienstkonfiguration" PHP-Konfigurationseditor ----) Klicken Sie auf 'Erweiterter Modus' ----) Suchen Sie 'default_charset' und lassen Sie es leer ---- nur nichts , nicht utf8, nicht ISO

1
grrow