Php 法语地区翻译字符显示为问号/错误
我使用date()函数在基于国家/地区的php语言翻译中遇到此错误Php 法语地区翻译字符显示为问号/错误,php,codeigniter,Php,Codeigniter,我使用date()函数在基于国家/地区的php语言翻译中遇到此错误 date_default_timezone_set("Europe/Paris"); setlocale( LC_TIME,'fr_FR', 'fr_FR.utf8', 'fr_FR.UTF8', 'French'); 我正在使用strftime echo strftime('%d.%m.%Y'); 我在现场得到那个问号符号。如何修复此问题,请提前感谢注意,setlocale将使用给定列表中它可以找到的第一个区域设置。最有可
date_default_timezone_set("Europe/Paris");
setlocale( LC_TIME,'fr_FR', 'fr_FR.utf8', 'fr_FR.UTF8', 'French');
我正在使用strftime
echo strftime('%d.%m.%Y');
我在现场得到那个问号符号。如何修复此问题,请提前感谢注意,
setlocale
将使用给定列表中它可以找到的第一个区域设置。最有可能的是fr\u fr
区域设置首先匹配,并且没有使用UTF-8,和/或您根本没有安装该区域设置的UTF-8变体,和/或您的名称错误。使用locale-a
(CLI命令)检查已安装的区域设置,并在像fr\u fr
这样的通用版本之前优先考虑UTF-8版本
我的地区:
$ locale -a | grep fr_FR
fr_FR
fr_FR.ISO8859-1
fr_FR.ISO8859-15
fr_FR.UTF-8
因此:
setlocale(LC_TIME, 'fr_FR.UTF-8', 'fr_FR', 'French');
要证明它的不同之处,请执行以下操作:
$ php -r 'setlocale(LC_TIME, "fr_FR.ISO8859-1"); echo strftime("%A %B");'
Vendredi f?vrier
$ php -r 'setlocale(LC_TIME, "fr_FR.UTF-8"); echo strftime("%A %B");'
Vendredi février
看起来字符集有问题。这与本地化有关,因为您不能显示E急性口音。您的代码很好。首先对文档进行注释:
如果返回了奇怪的字符,请对UTF-8字符使用utf8_encode(strftime())
am使用charset也@Debflav PHP手册上的大多数注释都是毫无价值的,尤其是当它们与编码有关时utf8\u encode
是绷带,不是正确的固定方法。它应该是你最后的办法,用它修补strftime
的每次调用。修复您的区域设置应该是主要目标;