как избавиться от нераспознанных символов в utf-8? MySQL / PHP - PullRequest
2 голосов
/ 06 декабря 2010

У меня есть база данных mysql, настроенная на utf-8.Я установил свой php-заголовок на: header("Content-Type: text/html; charset=utf-8"); и в моем html: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Когда я возвращаю все, что имеет круглые кавычки или апострофы, они отображаются как нераспознанные символы (черный ромб с? Внутри).

Если я запускаю utf8_encode () в строке, которую я повторяю, она выглядит хорошо в Chrome, но показывает другой странный символ в Firefox.Есть ли что-то еще, что я могу сделать для всего сайта, чтобы сделать эту работу лучше?

(я получил доступ к БД с помощью sequel pro и phpmyadmin)

Ответы [ 4 ]

3 голосов
/ 06 декабря 2010

полные настройки utf-8:

1) .htaccess

AddDefaultCharset utf-8
PHP_VALUE default_charset utf-8

2) после mysqli_connect () в php вызовите этот:

mysqli_query($this->link, 'SET character_set_client="utf8",character_set_connection="utf8",character_set_results="utf8"; ');

3) ваша БД должна быть создана с набором символов "collation: utf8";все поля в таблице также должны быть "collation: utf8"

4) ваши PHP-файлы также должны быть созданы с помощью utf8 charset

1 голос
/ 13 июня 2011

вы пробовали использовать htmlentities?я знаю, что это не влияет на кодировку символов, но это может избавить от черного квадрата с вопросительным знаком.это часто делает для меня ...

$output = htmlentities($db_output);
echo $output;
1 голос
/ 06 декабря 2010

Убедитесь, что способ связи указан в UTF-8.В противном случае он будет преобразован.

См. mysql_client_encoding и mysql_set_charset

0 голосов
/ 22 ноября 2013

Как именно вы получаете эти "круглые кавычки и апострофы"?Если их основным источником является документ Word или Outlook, они будут закодированы в Windows-1252.Если вы копируете и вставляете напрямую из документа Word на веб-страницу UTF-8, следует использовать версию буфера обмена UTF-8, и эти символы появляются как многобайтовые символы UTF-8.Если эти символы сначала проходили через другие файлы или веб-страницы, не относящиеся к UTF-8, возможно, они оставались в однобайтовой кодировке Word «Smart Quote», которая недопустима в UTF-8 (и, таким образом,? -In-black-алмазный глиф).Обратите внимание, что веб-страницы, утверждающие, что они являются Latin-1 (ISO-8859-1), часто отображаются как Windows-1252, как 1) управляющие коды x80-x9F, которые накладываются на Smart Quotes, используются очень редко, и 2) это так часто встречается дляИнтеллектуальные кавычки, которые нужно смешивать с текстом.

Для страницы UTF-8, в которой кавычки и апострофы обозначены как «недопустимые символы», скажите браузеру использовать вместо страницы кодировку Windows-1252 («Просмотр»> «Кодировка символов»).или что-то подобное).Если эти символы теперь отображаются правильно, проблема заключалась в непереведенных умных цитатах.К сожалению, как только они окажутся в базе данных, только ручное редактирование их исправит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...