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

时间:2012-02-25 17:56:05

标签: php unicode localization

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

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

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

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

2 个答案:

答案 0 :(得分:3)

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

这不是一个不常见的问题,我以前一直被它咬过。

答案 1 :(得分:0)

为了确保覆盖你的default_charset php.ini使用这种方式,使用ini_set('default_charset','你的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');
?>