Мне пришлось написать поле IPTC 1:90, чтобы строки UTF-8 правильно отображались в Photoshop.Предполагая, что вы собираете данные IPTC в переменную с именем $ iptc, вы должны начать со следующих трех строк, чтобы обеспечить правильную обработку UTF-8:
// These two lines ensure that UTF8-Encoding will work (set the 1:90 field in the envelop)
// @see http://cpanforum.com/threads/2114 for a hint
$utf8seq = chr(0x1b) . chr(0x25) . chr(0x47);
$length = strlen($utf8seq);
$iptc = chr(0x1C) . chr(1) . chr('090') . chr($length >> 8) . chr($length & 0xFF) . $utf8seq;
Впоследствии вы можете продолжить добавление полей IPTC, например, с помощьюфункцию iptc_make_tag, как описано в примере на http://php.net/manual/en/function.iptcembed.php, и, наконец, встраивание их в ваш JPEG:
// Embed the IPTC data
$content = iptcembed($iptc, $path);
Надеюсь, это спасет кого-то еще от исследований и отладки, которые я должен был сделать сегодня ...