file_get_contents показывает неожиданный вывод при чтении файла - PullRequest
5 голосов
/ 15 марта 2012

Я хочу вывести встроенное изображение jpg в виде строки в кодировке base64, однако, когда я делаю это:

$contents = file_get_contents($filename);
print "<img src=\"data:image/jpg;base64,".$contents."\"/>";

Где $filename - локальный текстовый файл с изображением base64.Вывод выглядит следующим образом:

<img src="data:image/jpg;base64,/9j/4A..... (the rest of the file)...." />

И, очевидно, изображение не отображается, но откуда берется ?Это не в текстовом файле.Если удалить, изображение отображается правильно.

1 Ответ

9 голосов
/ 15 марта 2012

Это Unicode Порядок следования байтов .Файл был сохранен с редактором, который добавил спецификацию, чтобы указать, что файл закодирован как UTF-8.Таким образом, эти байты на самом деле находятся в файле, но текстовый редактор просто не покажет его, так как это не текст.Для хранения такого рода данных вы захотите удалить спецификацию.Самый простой способ - настроить редактор так, чтобы он не добавлял спецификацию, но если у вас нет влияния на процесс создания файла, вы можете добавить его в свой сценарий также на лету:

...