nat*_*ala 2 php format encoding datetime
我正在尝试使用strftime和法语语言环境格式化日期LC_TIME.我有一个编码问题,不是日期本身,而是格式字符串.
让我解释 ; 在我的例子中,$format是%A %d %B à %Hh%M和$time日期是八月的某个地方.
我首先从这开始:strftime($format, $time)它给了我Vendredi 05 Ao?t à 11h57.
我想解决编码问题,所以我做了这个:utf8_encode(strftime($format, $time)),这给了我这个:Vendredi 05 Août à 11h57.
您可以看到编码问题août已经消失,但是à在格式字符串上出现了一个问题.
我该如何解决这个问题?我必须做utf8_encode(strftime("%A %d %B", $time)) . " à " . utf8_encode(strftime("%Hh%M", $time))或有更干净的方式吗?
谢谢 !
鉴于上面的输出示例,我猜你的源文件是UTF-8(因此à是UTF-8编码的),输出HTML也是用UTF-8字符集发送的.这个问题似乎是,你正在使用非UTF-8法语区域所以从返回的字符串strftime()是不是 UTF-8,而是像ISO-8859-1或ISO-8859-15.
所以要么你坚持使用繁琐的方法将结果字符串的一部分转换为UTF-8(utf8_encode(strftime("%A %d %B", $time)) . " à " . utf8_encode(strftime("%Hh%M", $time))或者选择法语区域设置的UTF-8变体.在Linux上应该是类似的fr_FR.UTF-8.
以下适用于Mac OS X(随附PHP 5.5):
<?php
setlocale(LC_TIME, 'fr_FR.UTF-8');
echo strftime('%A %d %B à %Hh%M', strtotime('2016-08-12 12:00:00'));
// Vendredi 12 août à 12h00
Run Code Online (Sandbox Code Playgroud)
还要检查在locale -a命令行上运行的系统支持的本地服务器.
| 归档时间: |
|
| 查看次数: |
1205 次 |
| 最近记录: |