本地主机和远程服务器之间的 ICONV 编码不同

ICONV encoding differs between localhost and remote server

我在 localhosot 和远程服务器上的编码有问题。例如,当我在本地主机上选择俄语时,显示“вторник 14.07.15”(正确答案),但在远程服务器上显示“Р’С,РѕСЂРЅРёРє 14.07.15”。 在 lang.ru.php 中是 UTF-8 编码,文件如下所示:

setlocale(LC_ALL, 'ru_RU.UTF-8', 'ru_RU', 'ru', 'rus', 'russian', 'ru_RU.ISO_8859-5', 'Russian_Russia.1251');

$lang = array();

$lang['code'] = "ru";

$lang['PAGE_TITLE'] = 'Hello';

在index.php我显示日期:

echo "<span class='daydatetime'>" . iconv('Windows-1250', 'UTF-8//TRANSLIT',strftime("%A <br> %d.%m.%y", strtotime("+ 1 days"))) . "</span>";

为什么在本地主机上一切正常,而在远程服务器上编码损坏? 如果有人帮助我,我将不胜感激。最好的问候。

来自 php 的 setlocale 页面:

If locale is an array or followed by additional parameters then each array element or parameter is tried to be set as new locale until success.

调用 setlocale 并提供多个具有不同编码 的语言环境(ru_RU.UTF-8、ru_RU.ISO_8859-5)可能不匹配iconv() 调用中的期望值:

string iconv (string $in_charset, string $out_charset, string $str)

$in_charset 是 Windows-1250。您可以通过

获取服务器编码
$in_charset = nl_langinfo(CODESET);

另外 $out_charset 应该匹配 Content-Type header.

中的字符集