php - 使用 PHP 以非 ASCII 字符输出日期

标签 php utf-8 non-ascii-characters strftime chinese-locale

我正在尝试以繁体中文输出日期。

我将日期作为 Unix 时间戳(例如:“1467244800”)。

我正在执行以下操作:

<?php
setlocale (LC_TIME, "zh_TW");
echo strftime("%e %B %Y", $timestamp );
?>

我得到的输出是 Unicode“未定义”字符:

30 ���� 2016
17 �T�� 2016
18 �Q�G�� 2015 

谁能告诉我我做错了什么?

我的 HTML header 包含:

<html lang="zh-TW">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

页面上的其余中文内容输出正常。如果您查看页面源代码,您会看到:

<span>最新消息</span>
<span class="pipe">18 �Q�G�� 2015</span>

只有 strftime() 日期显示为“未定义”字符:����...

感谢您的浏览...

最佳答案

区域设置不仅有不同的语言,而且还有不同的编码。默认的 zh_TW 语言环境可能会使用一些中文编码,而您想要的是 UTF-8。因此,请使用 UTF-8 版本的区域设置:

setlocale(LC_TIME, 'zh_TW.UTF-8');

这取决于您的特定系统及其上安装的区域设置。在命令行上检查:

$ locale -a
...
zh_TW
zh_TW.Big5
zh_TW.UTF-8

为了更好地跨平台兼容,您可以尝试多种语言环境:

setlocale(LC_TIME, 'zh_TW.UTF-8', 'zh_TW.utf8', 'zh_TW');

关于php - 使用 PHP 以非 ASCII 字符输出日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39828985/

相关文章:

javascript - Sublime Text 3 PHP 语法不高亮显示

php - isset 和 !empty 的简写

c - 如何使用 iconv(3) 将宽字符串转换为 UTF-8?

javascript - 使用 javascript 导出 CSV 时重音字母无法正确显示

python-2.7 - Python : ascii codec can't encode en-dash

php - 如何使用 plesk 12 在 Ubuntu 14.4 上安装 php 5.3?缺少 libxml2

php - 有效地保存表中的数据,并且易于检索和回显

php - 转换编码的 utf-8 JSON

c++ - 如何从 Windows 控制台读取 utf-8 字符?似乎 ReadConsoleOutputCharacter() 无法处理它们

sql-server - Url Decode T-SQL 函数未翻译超出 ascii 范围的字符