[英]PHP 5.6 Charset Header Back To ISO-8859-1?
我的托管服務最近將我的網站服務器從PHP 5.3升級到5.6,它打破了我的網站,因為我的所有html / php文件都是ISO-8859-1,但網站現在正在提供響應標頭指示
charset=UTF-8
我知道我最終應該轉向UTF-8文件,但在此期間我想要快速修復。 我嘗試了以下修復:
<meta charset="ISO-8859-1"> (in the <head> tag of html files)
AddDefaultCharset ISO-8859-1 (in .htaccess)
default_charset= "ISO-8859-1" (in php.ini)
...但這些都沒有影響響應標頭字符集。
測試中唯一有效的方法是將此行添加到我的大多數(不是全部)頁面使用的header.php文件中:
header('Content-Type: charset=ISO-8859-1');
但是我不想搜索所有的straggler文件並將其添加到每個文件中。 如果我要打獵並以這種方式觸摸它們,我不妨將所有文件轉換為UTF-8。
所以...我想知道是否有人會知道為什么我的PHP.ini或htaccess修復不能普遍完成這項工作? 這些不起作用的事實是否表明某些其他Apache設置控制了charset的響應頭?
提前致謝。
更新:我甚至嘗試添加
addCharset ISO-8859-1 .html .htm .php
到.htaccess但沒有快樂。
Spiele-Umsonst的回答對我不起作用(在Apache上),但是這樣做了:
php_value default_charset Off
AddDefaultCharset ISO-8859-1
“Off”是“AddDefaultCharset”的有效值,所以我想也是default_charset。 “無”是無效的,所以我猜這就是為什么它不起作用。 我認為這可能取決於一些服務器配置或使用的http deamon。
進一步閱讀Apache Web服務器: http : //httpd.apache.org/docs/current/mod/core.html#adddefaultcharset
這個.htaccess會幫助你我的朋友:
php_value default_charset None
AddDefaultCharset ISO-8859-1
並且不要忘記html文件:P從元標記中清除它們或確保它們是alos ISO
對於Apache,默認字符集在httpd.conf中設置。 看看這個帖子: 將PHP默認編碼設置為utf-8? 。
祝好運!
要在.htaccess或/ etc / apache2 / sites-available /中進行修改? 這取決於所需的范圍。
我在.htaccess中寫了php_value default_charset ISO-8859-1
來覆蓋php.ini default_charset UTF-8
的值。
它正在運行,因為我的apache配置文件中沒有AddDefaultCharset。 我添加.htaccess AddDefaultCharset ISO-8859-1
來防止。
如果上述方法不起作用,您可能需要在PHP文件的頂部嘗試這樣的操作:
mb_internal_encoding("iso-8859-1");
mb_http_output( "iso-8859-1" );
ob_start("mb_output_handler");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.