使用 PHP 以 non-ASCII 个字符输出日期
Outputting dates in non-ASCII characters with PHP
我正在尝试以繁体中文输出日期。
我将日期作为 Unix 时间戳,(例如:“1467244800”)。
我正在做以下事情:
<?php
setlocale (LC_TIME, "zh_TW");
echo strftime("%e %B %Y", $timestamp );
?>
我得到的输出是 Unicode "Undefined" 个字符:
30 ���� 2016
17 �T�� 2016
18 �Q�G�� 2015
谁能告诉我我做错了什么?
我的 HTML headers 包含:
<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() 日期显示为 "Undefined" 个字符:����...
感谢观看...
您可能必须告诉 PHP 所有字符串都是 UTF-8。例如:
mb_internal_encoding('UTF-8');
或者如果问题出在这个字符串上:
$out = strftime("%e %B %Y", $timestamp);
echo mb_convert_encoding($out, 'UTF-8', mb_detect_encoding($out));
或者如果 mb_detect_encoding()
无法正常工作:
$out = strftime("%e %B %Y", $timestamp);
echo mb_convert_encoding($out, 'UTF-8', 'CNS-11643');
7之前的版本PHP基本上不知道字符串的编码。一切都只是一个 8 位字节的数组。获得正确的输出编码有时可以立即正常工作,但有时您必须手动设置所有内容。
语言环境不仅有不同的语言,还有不同的编码。默认的 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');
我正在尝试以繁体中文输出日期。
我将日期作为 Unix 时间戳,(例如:“1467244800”)。
我正在做以下事情:
<?php
setlocale (LC_TIME, "zh_TW");
echo strftime("%e %B %Y", $timestamp );
?>
我得到的输出是 Unicode "Undefined" 个字符:
30 ���� 2016
17 �T�� 2016
18 �Q�G�� 2015
谁能告诉我我做错了什么?
我的 HTML headers 包含:
<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() 日期显示为 "Undefined" 个字符:����...
感谢观看...
您可能必须告诉 PHP 所有字符串都是 UTF-8。例如:
mb_internal_encoding('UTF-8');
或者如果问题出在这个字符串上:
$out = strftime("%e %B %Y", $timestamp);
echo mb_convert_encoding($out, 'UTF-8', mb_detect_encoding($out));
或者如果 mb_detect_encoding()
无法正常工作:
$out = strftime("%e %B %Y", $timestamp);
echo mb_convert_encoding($out, 'UTF-8', 'CNS-11643');
7之前的版本PHP基本上不知道字符串的编码。一切都只是一个 8 位字节的数组。获得正确的输出编码有时可以立即正常工作,但有时您必须手动设置所有内容。
语言环境不仅有不同的语言,还有不同的编码。默认的 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');