当我在php.ini文件中指定了utf-8时,为什么我的内部编码是ISO-8859-1


Why is my internal encoding ISO-8859-1 when I have specified utf-8 in my php.ini file?

在我的php.ini文件中,我包含了mbstring.internal_encoding = "UTF-8"。(我试过带或不带双引号,大写或不大写。)

然而,当我运行echo "current internal encoding: ".mb_internal_encoding();时,我仍然得到ISO-8859-1。

为什么会这样,在php.ini文件中我能做些什么来一劳永逸地设置内部编码吗?

我在WinXP笔记本电脑上使用WAMPserver。

如注释中所述,这是因为通常至少有两个php.ini文件:一个用于命令行版本,另一个用于Apache插件。你需要确保你编辑的是正确的。

这不是一个罕见的问题,我以前肯定被它咬过。

要确保覆盖php.ini的default_charset,请使用这种方式,使用ini_set('default_charset','Your charset');

将这段代码放在每个php文件的开头。。。

示例:index.php

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

然后在根服务器中创建一个文件夹"php",并将此文件。。。这段代码服务于latin1覆盖utf-8…

config.php

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

或者这个。。。这段代码服务于utf-8覆盖latin1。。。根据需要使用第一个或第二个。。。

config.php

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