Nowadays IPTC captions may be encoded in UTF-8.
In that case, IPTC tag CodedCharacterSet would be set to "ESC % G".
This tag has tag marker "1#090".
To decode such a caption into simple ISO-8859-1, you could use the following code:
<?php
$IPTC_Caption = "";
$size = getimagesize( $image_path, $info );
if (isset($info["APP13"])) {
if($iptc = iptcparse( $info["APP13"] ) ) {
$IPTC_Caption = str_replace( "\000", "", $iptc["2#120"][0] );
if(isset($iptc["1#090"]) && $iptc["1#090"][0] == "\x1B%G")
$IPTC_Caption = utf8_decode($IPTC_Caption);
}
}
?>
Of course, this will only preserve ISO-8859-1 characters.
For proper Unicode support, you should convert UTF-8 byte sequences into HTML character entities, or encode the whole web page in UTF-8.