[英]Spanish Characters not Displaying Correctly
我得到了一个可爱的 框,其中应该显示西班牙语字符。 (即:ñ、á 等)。 我已经确保我的元 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 中需要考虑的事项
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');
我已经遭受这个问题很多年了,我找不到任何逻辑,我已经尝试了上述所有解决方案。
一种解决方案是为所有文本制作 html 代码。 这是我在所有其他方法都失败时使用的函数。
function span_accent($wordz)
{
$wordz = str_replace( "Á","Á",$wordz);
$wordz = str_replace( "É","É",$wordz);
$wordz = str_replace( "Í","Í",$wordz);
$wordz = str_replace( "Ó","Ó",$wordz);
$wordz = str_replace( "Ú","Ú",$wordz);
$wordz = str_replace( "Ñ","Ñ",$wordz);
$wordz = str_replace( "Ü","Ü",$wordz);
$wordz = str_replace( "á","á",$wordz);
$wordz = str_replace( "é","é",$wordz);
$wordz = str_replace( "í","í",$wordz);
$wordz = str_replace( "ó","ó",$wordz);
$wordz = str_replace( "ú","ú",$wordz);
$wordz = str_replace( "ñ","ñ",$wordz);
$wordz = str_replace( "ü","ü",$wordz);
$wordz = str_replace( "¿","¿",$wordz);
$wordz = str_replace( "¡","¡",$wordz);
$wordz = str_replace( "€","€",$wordz);
$wordz = str_replace( "«","«",$wordz);
$wordz = str_replace( "»","»",$wordz);
$wordz = str_replace( "‹","‹",$wordz);
$wordz = str_replace( "›","›",$wordz);
return $wordz;
}
有类似的问题,我在这里找到了答案。 不显示西班牙语字符
解决方案是从 UTF-8 更改为 windows-1252。
(HTML) <meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
(PHP) ini_set('default_charset', 'windows-1252');
我的问题是从 CSV 文件中读取西班牙语字符。 当我在 Excel 中打开文件时,字符显示正常。 在我的编辑器中,无论预期字符如何,都会显示奇数字符。 此更改似乎适合我的要求。
请检查您的文件编码。 它必须是没有 BOM 的 UTF-8 或 UTF-8。
改变你的文件编码。 使用 Notepad++(您也可以使用其他编辑器来更改文件编码)。 在菜单栏中 > 选择编码 > 选择任何不带 BOM 的 UTF-8 或 UTF-8。
UTF-8 和无 BOM 的 UTF-8 的区别见链接。 UTF-8 和没有 BOM 的 UTF-8 有什么区别?
希望它能有所帮助。 :)
检查您的代码是否也编码为 UTF-8 很重要(您可以在许多文本和代码编辑器中看到此属性)。
因为只有一个符号(黑色方块),所以您可能使用的是 ISO-8859-1 或 ISO-8859-15 。
你能看到数据库表中的内容是正确的吗,用phpmyadmin查看一下,例如。 如果是,请确保您的 php 文件是 utf8 编码的,请查看您的 ide/editor 配置。
使用utf8mb4
或Windows-1252
ini_set('default_charset', 'utf8mb4');
要么
header('Content-Type: text/html; charset=utf8mb4');
然后使用标签,
<meta charset="utf8mb4">
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.