2014-12-03 69 views
5

declare() page of the PHP manualPHP声明编码

编码

脚本的编码可以每个脚本中使用的编码 指令指定。

示例3声明脚本的编码。

<?php 
declare(encoding='ISO-8859-1'); 
// code here 
?> 
  1. 这是什么做的是什么呢?脚本的行为如何受此指令影响?

  2. 这与设置指令mbstring.internal_encoding(在PHP 5.6之前)和default_charset(从PHP 5.6开始)或使用mb_internal_encoding()函数有什么不同?

(我同时使用PHP 5.3和5.5。目前,我的文件都保存在UTF-8和I服HTML文件时,发送标题Content-Type: text/html; charset=utf-8。)

+1

71次浏览和3票,不错。 – Pacerier 2015-03-13 13:37:47

回答

2

PHP 5.6配备了一个新的默认字符集的指令设置为UTF-8,在某些情况下,这可能是页面以latin1作为元标记提供的问题,您可以通过在脚本中调用ini_set('default_charset','iso-8859-1')来覆盖此指令。

做这件事穿上你想被编码在脚本的开头为latin1这段代码每个PHP文件:

例如:的index.php

<?php 
    $server_root = realpath($_SERVER["DOCUMENT_ROOT"]); 
    $config_serv = "$server_root/php/config.php"; 
    include("$config_serv"); 
?> 

然后创建一个文件夹“PHP” 在你的根网站,并把这段代码到config.php文件:

例如:config.php文件

<?php 
    ########################################################################## 
    # Server Directive - Override default_charset utf-8 to latin1 in php.ini # 
    ########################################################################## 
    @ini_set('default_charset', 'ISO-8859-1'); 
?> 

如果你的php.ini被设置为latin1(ISO-8859-1)并且你希望提供一个utf-8(unicode)页面,你可以使用相同的方法强制编码,但不要使用iso-8859-1,而是使用utf- 8。再看那:

例如:config.php文件

<?php 
    ########################################################################## 
    # Server Directive - Override default_charset latin1 to utf-8 in php.ini # 
    ########################################################################## 
    @ini_set('default_charset', 'UTF-8'); 
?> 

我希望你觉得我的回答有用,我解决我的问题通过这种方式!