ICONV编码在localhost和远程服务器之间有所不同

时间:2015-07-14 10:44:05

标签: php encoding character-encoding localhost iconv

我在localhosot和远程服务器上编码时遇到问题。例如,当我在localhost上选择俄语语言时,请显示“вторник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>";

为什么在localhost中一切都很好,而在远程服务器中是否有破坏编码? 如果有人帮助我,我将非常感激。最好的问候。

1 个答案:

答案 0 :(得分:1)

来自php的setlocale页面:

  

如果 locale 是一个数组或后跟其他参数,则尝试将每个数组元素或参数设置为新的语言环境,直到成功。

调用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标头中的字符集。