docs: private String parseString(final ImageInputStream pInput, final int pLength) throws IOException {
          byte[] data = new byte[pLength];
          pInput.readFully(data);
  
          // NOTE: The IPTC specification says character data should use ISO 646 or ISO 2022 encoding.
          // UTF-8 contains all 646 characters, but not 2022.
          // This is however close to what libiptcdata does, see: http://libiptcdata.sourceforge.net/docs/iptc-i18n.html
          Charset charset = Charset.forName("UTF-8");
          CharsetDecoder decoder = charset.newDecoder();
  
          try {
              // First try to decode using UTF-8 (which seems to be the de-facto standard)
              // Will fail fast on illegal UTF-8-sequences
              CharBuffer chars = decoder.onMalformedInput(CodingErrorAction.REPORT)
                      .onUnmappableCharacter(CodingErrorAction.REPORT)
                      .decode(ByteBuffer.wrap(data));
              return chars.toString();
          }
          catch (CharacterCodingException notUTF8) {
              if (encoding == ENCODING_UTF_8) {
                  throw new IIOException("Wrong encoding of IPTC data, explicitly set to UTF-8 in DataSet 1:90", notUTF8);
              }
  
              // Fall back to use ISO-8859-1
              // This will not fail, but may create wrong fallback-characters
              return StringUtil.decode(data, 0, data.length, "ISO8859_1");
          }
      }