当我创建非英语页面(例如俄语)时,我必须使用 header() 来设置页面的字符集(我使用 UTF-8):
header('Content-Type: text/html; charset=utf-8');
但是我所有的页面都应该有 UTF-8 字符集,php 中是否有一个属性可以默认设置它(我的意思是:我不想每次都设置它)。
您可以使用 .htaccess 文件来执行此操作:
AddDefaultCharset UTF-8
如果你想要更健壮的东西,你可以只为特定的文件类型指定这个字符集类型:
<FilesMatch ".(htm|html|css|js)$">
AddDefaultCharset UTF-8
</FilesMatch>
另请参阅本文了解其他方法: http ://www.askapache.com/htaccess/setting-charset-in-htaccess.html
整个 .htaccess 文件
让我们看一下整个 htaccess 配置文件,然后浏览所有配置选项。
Header unset Pragma
FileETag None
Header unset ETag
缓存图像/pdf 文档 10 天
<FilesMatch "\.(ico|pdf|jpg|jpeg|png|gif)$">
Header set Cache-Control "max-age=864000, public, must-revalidate"
Header unset Last-Modified
</FilesMatch>
缓存 html/htm/xml/txt 文件 2 天
<FilesMatch "\.(html|htm|xml|txt|xsl)$">
Header set Cache-Control "max-age=7200, must-revalidate"
</FilesMatch>
您可以使用 define() 设置默认字符集。
来自 PHP 文档http://www.php.net/manual/en/regexp.reference.unicode.php
$text = '';//some russian content
define('CHARSET', preg_match( '/[\p{Cyrillic}]/u', $text) ? 'windows-1251' : 'utf-8');// or fetch charset from DB some other resource
header('Content-Type: text/html; charset='.CHARSET);
您的问题与 PHP 无关。您的 httpd 配置不正确(即在许多发行版 Apache 过去默认AddDefaultCharset
设置为Latin1
。