У меня, как и у многих других разработчиков PHP, были проблемы с кодировкой символов, в вопросе будут описаны шаги, которые я выполняю, чтобы убедиться, что мои данные сохранены и выведены в формате UTF8. Я хотел бы получить любой совет о том, что еще я должен рассмотреть или изменить с моим текущим мышлением.
У меня есть база данных mysql DEFAULT CHARACTER UTF-8
, мои таблицы имеют параметры сортировки utf8_general_ci
Я использую php-скрипт для чтения данных из RSS-канала, а затем сохраняю эти данные в базе данных. Прежде чем сохранить эти данные, я проверяю, являются ли эти данные UTF-8 или нет, выполнив следующие действия:
protected function _convertToUTF8($content) {
$enc = mb_detect_encoding($content);
return mb_convert_encoding($content, "UTF-8", $enc);
}
При выводе этих данных на веб-страницу я устанавливаю заголовки в php
header("Content-type: text/html; charset=utf-8");
и я также установил метатег Content-Type в utf-8
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
Пока что все работает так, как ожидалось, я не получаю забавных символов, и все идет гладко, но должен ли я что-то менять/учитывать при работе с этими данными?
Проблема, с которой я сейчас сталкиваюсь, заключается в выводе этих данных в файл txt (csv). Я использую fwrite(), который успешно создал файл, но третья сторона, которой я передаю этот файл, говорит, что файл не является UTF-8. Я не уверен, что данные выводятся в формате UTF-8, как я могу это проверить? При входе на удаленный сервер через SSH и просмотре файла я получаю Itâs a
, когда я просматриваю файл, я получаю Itâ~@~Ys
, когда я удаляю файл, я получаю It<E2><80><99>s
. Что я здесь упускаю?
Заранее спасибо!