<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2018-04-19 11:27 GMT+02:00 Remco Viëtor <span dir="ltr"><<a href="mailto:remco.vietor@wanadoo.fr" target="_blank">remco.vietor@wanadoo.fr</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail-HOEnZb"><div class="gmail-h5">On jeudi 19 avril 2018 10:43:41 CEST meku wrote:<br>
> Strange exiv2 commandline appears to work, eg:<br>
> exiv2 -M"set Exif.Image.ImageDescription 'ミスタードーナツ'" FILE.JPG<br>
> <br>
> I filed a bug for Exif.Image.ImageDescription field not updating in DK6,<br>
> <a href="https://bugs.kde.org/show_bug.cgi?id=393283" rel="noreferrer" target="_blank">https://bugs.kde.org/show_bug.<wbr>cgi?id=393283</a><br>
> <br>
> On 19 April 2018 at 17:48, Gilles Caulier <<a href="mailto:caulier.gilles@gmail.com">caulier.gilles@gmail.com</a>> wrote:<br>
> > Hi,<br>
> > <br>
> > Exif do not support any special character encoding, as UTF8<br>
> > <br>
> > Using XMP is the right way.<br>
> > <br>
> > Note : IPTC is limited to Latin1 (ASCII extended). Take a care too.<br>
> > <br>
> > Gilles Caulier<br>
> > <br>
> > 2018-04-19 9:43 GMT+02:00 meku <<a href="mailto:digikam@meku.org">digikam@meku.org</a>>:<br>
> >> I discovered that my UTF captions appear to be corrupted using<br>
> >> Digikam-5.9.0, but only in the Exif.Image.ImageDescription field.<br>
> >> <br>
> >> Using exiv2 command line it appears I can write UTF caption to this<br>
> >> field.<br>
> >> <br>
> >> I tried loading up Digikam-6.0.0 and it appears to ignore the field when<br>
> >> writing, even though the default settings in Metadata>Advanced are set to<br>
> >> write to the field.<br>
> >> <br>
> >> Is this an issue with Digikam or is this a limitation of EXIF?<br>
<br>
</div></div>I think the key here is "appears" to work. According to the standard, EXIF <br>
tags can only use (7-bit) ASCII characters, but that does not mean that <br>
programs reading and writing the tags scrupulously respect that. <br>
<br>
At least in standard C and C++, the easiest way is to grab the string the user <br>
gives as a sequence of bytes, and write that to the metadata. And just read <br>
the contents from the metadata as a sequence of bytes. All that without <br>
worrying about the encoding... (which is not all that straightforward with <br>
those languages). Somewhere there must be a translation to the encoding the <br>
user wants, but that's not the problem of the library handling the metadata.<br>
<br>
As long as there aren't any unexpected \000 bytes in such a sequence, that may <br>
appear to work correctly, *as long as the same encoding is used on writing and <br>
on reading*. But if the encodings for reading and writing differ, you'll get <br>
garbled output, and *no* sure way to get the correct encoding (though you can <br>
find an encoding that's 'close enough').<br></blockquote><div><br></div><div>The metadata encapsulating  is already in digiKam source code here :</div><div><br></div><div><a href="https://cgit.kde.org/digikam.git/tree/core/libs/dmetadata/metaengine_p.cpp#n390">https://cgit.kde.org/digikam.git/tree/core/libs/dmetadata/metaengine_p.cpp#n390</a><br></div><div><br></div><div>Gilles Caulier</div></div></div></div>