PHP声明编码

rin*_*t.6 6 php encoding utf-8 declare

declare()PHP手册页面上:

编码

可以使用encoding指令为每个脚本指定脚本的编码.

Example#3声明脚本的编码.

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

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

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

Ale*_*dro 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");
?>
Run Code Online (Sandbox Code Playgroud)

然后在你的根网站下创建一个文件夹“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');
?>
Run Code Online (Sandbox Code Playgroud)

如果您的 php.ini 设置为 latin1 ( ISO-8859-1) 并且您想要提供 utf-8 (unicode) 页面,您可以使用相同的方式强制编码,但使用 utf-8 代替 iso-8859-1。看那个:

例子:config.php

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

我希望你觉得我的回答有用,我就是这样解决我的问题的!