西班牙字符无法正确显示

Not*_*Jay 9 php mysql date strftime special-characters

我得到了一个可爱的 盒子,应该显示西班牙语字符.(即:ñ,á等).我已经确定我的meta http-equiv设置为utf-8:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Run Code Online (Sandbox Code Playgroud)

我还确保页面标题也设置为utf-8:

header('Content-type: text/html; charset=UTF-8');
Run Code Online (Sandbox Code Playgroud)

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

<?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> 
Run Code Online (Sandbox Code Playgroud)

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

结果:s bado8:00

一如既往地非常感谢任何帮助.

PoX*_*PoX 7

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

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

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

  • PHP应发送一个标头,通知浏览器期望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');


小智 5

我已经遇到这个问题很多年了,我找不到任何逻辑,我已经尝试了上面的所有解决方案.

一种解决方案是为所有文本制作html代码.这是我在其他所有方法都失败时使用的功能.

function span_accent($wordz)
{

$wordz = str_replace( "Á","&Aacute;",$wordz);
$wordz = str_replace( "É","&Eacute;",$wordz);
$wordz = str_replace( "Í","&Iacute;",$wordz);
$wordz = str_replace( "Ó","&Oacute;",$wordz);
$wordz = str_replace( "Ú","&Uacute;",$wordz);
$wordz = str_replace( "Ñ","&Ntilde;",$wordz);
$wordz = str_replace( "Ü","&Uuml;",$wordz);

$wordz = str_replace( "á","&aacute;",$wordz);
$wordz = str_replace( "é","&eacute;",$wordz);
$wordz = str_replace( "í","&iacute;",$wordz);
$wordz = str_replace( "ó","&oacute;",$wordz);
$wordz = str_replace( "ú","&uacute;",$wordz);
$wordz = str_replace( "ñ","&ntilde;",$wordz);
$wordz = str_replace( "ü","&uuml;",$wordz);

$wordz = str_replace( "¿","&iquest;",$wordz);
$wordz = str_replace( "¡","&iexcl;",$wordz);
$wordz = str_replace( "€","&euro;",$wordz);
$wordz = str_replace( "«","&laquo;",$wordz);
$wordz = str_replace( "»","&raquo;",$wordz);
$wordz = str_replace( "‹","&lsaquo;",$wordz);
$wordz = str_replace( "›","&rsaquo;",$wordz);
return $wordz;
}
Run Code Online (Sandbox Code Playgroud)


小智 5

请检查您的文件编码。它必须是 UTF-8 或 UTF-8 without BOM。

更改文件编码。使用Notepad++(您也可以使用其他编辑器来更改文件编码)。在菜单栏中 > 选择“编码”> 选择任何 UTF-8 或不带 BOM 的 UTF-8。

UTF-8 和 UTF-8 without BOM 的区别请参见链接。 UTF-8 和无 BOM 的 UTF-8 有什么区别?

希望它能有所帮助。:)