簡體   English   中英

PHP 5.6 Charset Header返回ISO-8859-1?

[英]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?

祝好運!

  • php_value更改php配置
  • AddDefaultCharset更改了apache配置

要在.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM