php - 西类牙文字符显示不正确

标签 php mysql date special-characters strftime

我得到了一个可爱的 � 框,其中应该显示西类牙文字符。 (即:ñ、á 等)。我已经确保我的 meta http-equiv 设置为 utf-8:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

我还确保页眉也设置为 utf-8:

header('Content-type: text/html; charset=UTF-8');

到目前为止,这是我的代码的开始阶段:

<?php
    setlocale(LC_ALL, 'es_MX');
    $datetime = strtotime($event['datetime']);
    $date = date("M j, Y", $datetime);
    $day = strftime("%A", $datetime);
    $time = date("g:i", $datetime);
?>
    <a href="/<?= $event['request'] ?>.html"><?= $day ?> <?= $time ?></a> 

上面的代码是在一个where语句中。我读过在数据库中切换排序规则也可能是一个因素,但我已经将它设置为 UTF-8 General ci。另外,该列中唯一的东西是 DateTime,它是数字,无论如何都无法整理。

结果:s�bado 8:00

我们一如既往地非常感谢您的帮助。

最佳答案

在 PHP/MySQL/UTF-8 中需要考虑的事情

  • 数据库表和文本列应设置为 UTF-8
  • HTML 页面 Content-Type 应设置为 UTF-8

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  • PHP 应该发送一个 header 通知浏览器期望使用 UTF-8

    header('Content-Type: text/html; charset=utf-8' );

  • PHP-MySQL 连接应设置为 UTF-8

    mysqli_query("SET CHARACTER_SET_CLIENT='utf8'",$conn);

    mysqli_query("SET CHARACTER_SET_RESULTS='utf8'",$conn);

    mysqli_query("SET CHARACTER_SET_CONNECTION='utf8'",$conn);

  • PHP ini 有 default_charset 设置它应该是 utf-8 如果您无权访问它,请使用 ini_set('default_charset', 'utf-8');

关于php - 西类牙文字符显示不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14649547/

相关文章:

mysql - 如何在目录中找到最后一个mysql转储文件并将其导入

javascript - 无法将数据库中的数据与字符串数组进行比较

ios - 尝试将当前日期和日期参数设置为过去的日期

mysql - 如何将此日期/时间值插入到日期时间字段中

php - 我可以在使用 Datamapper/Codeigniter 提交事务后回滚事务吗?

php - Magento如何从一家商店的价格中去除小数

php - 如何在 php 正则表达式中的下划线后创建大写字母

php - 在php中格式化日期并存储在mysql中

java - 将数据库数据转换为对象

java - 通过指定星期几获取下一个日期