Испанские символы отображаются неправильно

Я получаю прекрасный box поле, где должны отображаться испанские символы. (т. е.: ñ, á, и т. д.). Я уже убедился, что мой мета 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 Bad Бадо 8: 00

любая помощь очень ценится, как всегда.

6 ответов


вещи для рассмотрения в PHP/MySQL / UTF-8

  • таблицы базы данных и текстовые столбцы должны быть установлены в UTF-8
  • тип содержимого HTML-страницы должен быть установлен в 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( "Á","&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;
}

пожалуйста, проверьте кодировку файла. Он должен быть в UTF-8 или UTF-8 без BOM.

изменить кодировку файла. Используйте Notepad++(вы можете использовать также другой редактор, где вы можете изменить кодировку файла). В строке меню > выберите кодирование > выберите любой UTF-8 или UTF-8 без спецификации.

см. ссылку для разницы UTF-8 и UTF-8 без спецификации. чем отличается UTF-8 от UTF-8 без BOM?

надеюсь, что это может помочь. :)


имея аналогичную проблему, я нашел ответ здесь. Не Отображать Испанские Символы

разрешение должно было измениться с 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, символы выглядели нормально. В моем редакторе нечетный символ был показан независимо от предполагаемого символа. Это изменение, кажется, работает для моих потребностей.


важно проверить, что ваш код также кодифицирован как UTF-8 (вы можете увидеть это свойство во многих редакторах текста и кода).

поскольку существует только один символ (черный квадрат), вероятно, вы используете ISO-8859-1 или ISO-8859-15 .


вы видите, что содержимое правильно в таблице базы данных, посмотрите на него с phpmyadmin, например. Если это так, убедитесь, что ваши php-файлы кодируются utf8, взгляните на конфигурацию ide/editor.