我在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中一切都很好,而在远程服务器中是否有破坏编码? 如果有人帮助我,我将非常感激。最好的问候。
答案 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标头中的字符集。