У меня, как и у многих других разработчиков 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"/>
Пока все работает, как и ожидалось, я не получаю никаких забавных символов и все идет гладко, но я должен что-то менять / учитывать при работе с этими данными?
Проблема, с которой я сейчас сталкиваюсь, заключается в выводе этих данных в текстовый файл (csv). Я использую fwrite (), которая успешно создала файл, но третье лицо, которому я передаю этот файл, говорит, что файл не является UTF- 8. Я не уверен, что данные выводятся как UTF-8 , как я могу это проверить? Когда я захожу на удаленный сервер через SSH, и я вижу файл, я получаю Itâs a
, когда я vim файл, я получаю Itâ~@~Ys
, когда я меньше файла, я получаю It<E2><80><99>s
. Что мне здесь не хватает?
Заранее спасибо!