问题
I am using a hosting company and it will list the files in a directory if the file index.html
is not there ,it uses iso-8859-1 as the default encoding.
If the server is Apache, is there a way to set UTF-8 as the default instead?
Update: Additionally I found out that it is actually using a DOCTYPE of HTML 3.2 and then there is not charset at all... so it is not setting any encoding. But is there a way to change it to use UTF-8?
回答1:
In httpd.conf add (or change if it's already there):
AddDefaultCharset utf-8
回答2:
Add this to your .htaccess
:
IndexOptions +Charset=UTF-8
Or, if you have administrator rights, you could set it globally by editing httpd.conf
and adding:
AddDefaultCharset UTF-8
(You can use AddDefaultCharset
in .htaccess
too, but it won’t affect Apache-generated directory listings that way.)
回答3:
See AddDefaultCharset Directive, AddCharset Directive, and this article.
AddDefaultCharset utf-8
But I have to use Chinese characters now and then. Previously, I translated Chinese characters to Unicode code and include it in the document using the
&#
hack. But it is only useful for page having a few characters.There is a better way to do that: encode the charset information in the filename, and apache will output the proper encoding header based on that. This is possible thanks to the
AddCharset
lines in the conf file, such as the line below:
conf/httpd.conf
:
AddCharset UTF-8 .utf8
So if you have a file whose names ends in
.html.utf8
, apache will serve the page as if it is encoded in UTF-8 and will dump the proper character-encoding directive in the header accordingly.
回答4:
In .htaccess add this line:
AddCharset utf-8 .html .css .php .txt .js
This is for those that do not have access to their server's conf file. It is just one more thing to try when other attempts failed.
As far as performance issues regarding the use of .htaccess I have not seen this. My typical page load times are 150-200 mS with or without .htaccess
What good is performance if your page does not render correctly. Most shared servers do not allow user access to the config file which is the preferred place to add a character set.
回答5:
Place AddDefaultCharset UTF-8
into /etc/apache2/conf.d/charset
. In fact, it's already there. You just have to uncomment it by removing the preceding #
.
回答6:
I'm not sure whether you have access to the Apache config (httpd.conf) but you should be able to set an AddDefaultCharset Directive. See:
http://httpd.apache.org/docs/2.0/mod/core.html
Look for the mod_mime.c module and make sure the following is set:
AddDefaultCharset utf-8
or the equivalent Apache 1.x docs (http://httpd.apache.org/docs/1.3/mod/core.html#adddefaultcharset).
However, this only works when "the response content-type is text/plain or text/html".
You should also make sure that your pages have a charset set as well. See this for more info:
http://www.w3.org/TR/REC-html40/charset.html
回答7:
This is untested but will probably work.
In your .htaccess file put:
<Files ~ "\.html?$">
Header set Content-Type "text/html; charset=utf-8"
</Files>
However, this will require mod_headers on the server.
回答8:
For completeness, on Apache2 on Ubuntu, you will find the default charset in charset.conf in conf-available.
Uncomment the line
AddDefaultCharset UTF-8
回答9:
Where all the HTML files are in UTF-8 and don't have meta tags for content type, I was only able to set the needed default for these files to be sent by Apache 2.4 by adding both directives:
AddLanguage ru .html
AddCharset UTF-8 .html
回答10:
Just a hint if you have long filenames in utf-8: by default they will be shortened to 20 bytes, so it may happen that the last character might be "cut in half" and therefore unrecognized properly. Then you may want to set the following:
IndexOptions Charset=UTF-8 NameWidth=*
NameWidth
setting will prevent shortening your file names, making them properly displayed and readable.
As other users already mentioned, this should be added either in httpd.conf
or apache2.conf
(if you do have admin rights) or in .htaccess
(if you don't).
回答11:
Just leave it empty: 'default_charset' in WHM :::::: default_charset =''
p.s. - In WHM go --------) Home »Service Configuration »PHP Configuration Editor ----) click 'Advanced Mode' ----) find 'default_charset' and leave it blank ---- just nothing, not utf8, not ISO
来源:https://stackoverflow.com/questions/913869/how-to-change-the-default-encoding-to-utf-8-for-apache