Я получаю прекрасный поле, где должны отображаться испанские символы. (т. е.: ñ, á и т. д.). Я уже убедился, что для моего 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
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; }
Просьба проверить ваш файл ENCODING. Он должен быть в UTF-8 или UTF-8 без спецификации.
Чтобы изменить кодировку файла. Используйте Notepad ++ (вы также можете использовать другой редактор, в котором вы можете изменить кодировку файла). В строке меню> Выберите ENCODING> Выберите любой UTF-8 или UTF-8 без спецификации.
См. Ссылку на разницу UTF-8 и UTF-8 без спецификации. В чем разница между UTF-8 и UTF-8 без спецификации?
Надеюсь, это поможет. 🙂
важно проверить, что ваш код также кодируется как UTF-8 (вы можете увидеть это свойство во множестве текстовых и кодовых редакторов).
Потому что есть только один символ (черный квадрат), вероятно, вы используете ISO-8859-1 или ISO-8859-15.
Вы можете видеть, что контент правильный в таблице базы данных, посмотрите на него с помощью phpmyadmin, например. Если это так, убедитесь, что ваши php-файлы закодированы в utf8, посмотрите на конфигурацию ide / editor.