Испанские символы отображаются неправильно
Я получаю прекрасный 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( "Á","Á",$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 или 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.