UTF-8日期编码不正确

时间:2014-07-22 19:02:47

标签: php utf-8

我很难使用角色字符集,我怀疑我的功能是显示日期以返回非UTF-8字符(août被钻石内的问号替换为août )。

在我的本地服务器上工作时一切都很好但是当我在我的登台服务器上推送我的代码时,它没有正确显示。

  • 我的php文件保存为UTF-8 NO BOM
  • 如果我检查输出页面,标题表示UTF-8。
  • 我的本地计算机是安装了MAMP的Mac,我的说服服务器安装了带有cPanel的CentOS。

以下是我怀疑导致问题的部分:

$langCode = "fr_FR"; /* Alos tried  fr_FR.UTF-8 */
setlocale(LC_ALL, $langCode);
$monthName = _(strftime("%B",strtotime($dateStr)))
echo $monthName; /* Alos tried  utf8_encode($monthName) worked on my staging server but not on my local server ! I'm using  */

4 个答案:

答案 0 :(得分:1)

最后找到了如何找到错误并修复它。

setlocale(LC_ALL, 'fr_FR');

var_dump(mb_detect_encoding(_(strftime("%B",strtotime($dateStr)))));

转储在登台服务器上的本地和UTF-8上返回FALSE

  

PHP.net documentation about mb_detect_encoding()

     

返回值

     

检测到的字符编码,如果编码不能,则为FALSE   从给定的字符串中检测到。

     

因此无法检测到charset。我会尝试“再次”强迫它

setlocale(LC_ALL, 'fr_FR.UTF-8');

var_dump(mb_detect_encoding(_(strftime("%B",strtotime($dateStr)))));

这次转储在登台服务器上的本地和UTF-8上返回UTF-8。所以我回滚我的代码,看看当我第一次尝试使用fr_FR.UTF-8时发生了什么,为什么它不起作用?并且我意识到我正在使用utf8_encode(),例如用户 deceze 指向此函数的doc的评论,

  

In fact, applying this function to text that is not encoded in ISO-8859-1 will most likely simply garble that text.

感谢大家的帮助!

答案 1 :(得分:0)

将此元标记放在<head></head>

中的html代码上
<meta charset="UTF-8">

答案 2 :(得分:0)

您的服务器似乎已配置为发送标头

content-type: text/html; charset=UTF-8

默认。您可以更改服务器配置,也可以在一开始就添加

<?php
    header("content-type: text/html; charset=UTF-8");
?>

自己设置此标题。

答案 3 :(得分:0)

你需要使用:

  <?php
  $conn = mysql_connect("localhost","root","root");
  mysql_select_db("test");

  mysql_query("SET NAMES 'utf8'", $conn);//put this line after you select db.