Я создаю файл, используя php fwrite(), и я знаю, что все мои данные находятся в UTF8 (я провел обширное тестирование по этому поводу - при сохранении данных в БД и выводе на обычную веб-страницу все работает нормально и сообщает как utf8.), но я мне говорят, что файл, который я вывожу, содержит данные, отличные от utf8 :( Есть ли команда в bash (CentOS) для проверки формата файла?
При использовании vim он показывает содержимое как:
Ничего не делайте.... Это отличный сайт со всем... Мы только что запустили/
Будем признательны за любую помощь: либо подтверждение того, что файл является UTF8, либо как записать содержимое utf8 в файл.
ОБНОВЛЕНИЕ
Чтобы уточнить, откуда я знаю, что у меня есть данные в UTF8, я сделал следующее:
- DB установлен в utf8 при сохранении данных
в базу данных я сначала запускаю это:
$enc = mb_detect_encoding($data);
$data = mb_convert_encoding($data, "UTF-8", $enc);
Непосредственно перед запуском fwrite я проверил данные с помощью Обратите внимание, что каждый фрагмент данных возвращает «IS utf-8».
if (strlen($data)==mb_strlen($data, 'UTF-8')) print 'NOT UTF-8'; else print 'IS utf-8';
Спасибо!
can_be_valid_utf8_statemachine()
. По крайней мере, он более точен в своем результате, чем ваш подход к сравнению strlen. - person hakre   schedule 14.06.2011