You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by db...@apache.org on 2018/01/01 20:52:02 UTC

commons-imaging git commit: IMAGING-212: use StandardCharsets to avoid reflection and UnsupportedEncodingExceptions

Repository: commons-imaging
Updated Branches:
  refs/heads/master 4701b9628 -> 7862d6028


IMAGING-212: use StandardCharsets to avoid reflection and UnsupportedEncodingExceptions


Project: http://git-wip-us.apache.org/repos/asf/commons-imaging/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-imaging/commit/7862d602
Tree: http://git-wip-us.apache.org/repos/asf/commons-imaging/tree/7862d602
Diff: http://git-wip-us.apache.org/repos/asf/commons-imaging/diff/7862d602

Branch: refs/heads/master
Commit: 7862d6028dafff8cd2b117b1cae0525ca655ba20
Parents: 4701b96
Author: Dave Brosius <db...@mebigfatguy.com>
Authored: Mon Jan 1 15:51:43 2018 -0500
Committer: Dave Brosius <db...@mebigfatguy.com>
Committed: Mon Jan 1 15:51:43 2018 -0500

----------------------------------------------------------------------
 .../imaging/formats/gif/GifImageParser.java     | 28 ++++++-------
 .../commons/imaging/formats/icns/IcnsType.java  | 15 ++-----
 .../imaging/formats/jpeg/JpegImageParser.java   |  7 +---
 .../imaging/formats/jpeg/iptc/IptcParser.java   |  7 ++--
 .../formats/jpeg/segments/App14Segment.java     |  9 +----
 .../imaging/formats/jpeg/xmp/JpegXmpParser.java | 10 ++---
 .../formats/jpeg/xmp/JpegXmpRewriter.java       |  3 +-
 .../commons/imaging/formats/png/ChunkType.java  |  9 +----
 .../commons/imaging/formats/png/PngWriter.java  | 37 ++++++++----------
 .../formats/png/chunks/PngChunkIccp.java        |  3 +-
 .../formats/png/chunks/PngChunkItxt.java        | 11 +++---
 .../formats/png/chunks/PngChunkScal.java        |  5 ++-
 .../formats/png/chunks/PngChunkText.java        |  5 ++-
 .../formats/png/chunks/PngChunkZtxt.java        |  5 ++-
 .../commons/imaging/formats/pnm/PamWriter.java  | 13 ++++---
 .../commons/imaging/formats/pnm/PbmWriter.java  |  7 ++--
 .../commons/imaging/formats/pnm/PgmWriter.java  |  9 +++--
 .../commons/imaging/formats/pnm/PpmWriter.java  | 13 ++++---
 .../imaging/formats/psd/ImageResourceBlock.java |  6 +--
 .../imaging/formats/psd/PsdImageParser.java     | 12 ++----
 .../imaging/formats/tiff/TiffImageParser.java   | 11 ++----
 .../formats/tiff/fieldtypes/FieldTypeAscii.java | 41 +++++---------------
 .../formats/tiff/taginfos/TagInfoAscii.java     | 20 ++++------
 .../formats/tiff/taginfos/TagInfoGpsText.java   | 18 +++------
 .../formats/tiff/taginfos/TagInfoXpString.java  | 32 ++++++---------
 .../formats/tiff/write/TiffImageWriterBase.java |  3 +-
 .../imaging/formats/xbm/XbmImageParser.java     | 21 +++++-----
 .../imaging/formats/xpm/XpmImageParser.java     | 21 +++++-----
 .../org/apache/commons/imaging/icc/IccTag.java  |  5 ++-
 .../commons/imaging/icc/IccTagDataTypes.java    |  7 ++--
 30 files changed, 161 insertions(+), 232 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/gif/GifImageParser.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/gif/GifImageParser.java b/src/main/java/org/apache/commons/imaging/formats/gif/GifImageParser.java
index f3d4e67..32c603d 100644
--- a/src/main/java/org/apache/commons/imaging/formats/gif/GifImageParser.java
+++ b/src/main/java/org/apache/commons/imaging/formats/gif/GifImageParser.java
@@ -33,8 +33,8 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.PrintWriter;
-import java.io.UnsupportedEncodingException;
 import java.nio.ByteOrder;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -290,7 +290,7 @@ public class GifImageParser extends ImageParser {
                     if (formatCompliance != null) {
                         formatCompliance.addComment(
                                 "Unknown Application Extension ("
-                                        + new String(label, "US-ASCII") + ")",
+                                        + new String(label, StandardCharsets.US_ASCII) + ")",
                                 completeCode);
                     }
 
@@ -508,7 +508,7 @@ public class GifImageParser extends ImageParser {
         for (final GifBlock block : blocks) {
             if (block.blockCode == code) {
                 final byte[] bytes = ((GenericGifBlock) block).appendSubBlocks();
-                result.add(new String(bytes, "US-ASCII"));
+                result.add(new String(bytes, StandardCharsets.US_ASCII));
             }
         }
 
@@ -870,7 +870,7 @@ public class GifImageParser extends ImageParser {
             bos.write(XMP_APPLICATION_ID_AND_AUTH_CODE.length); // 0x0B
             bos.write(XMP_APPLICATION_ID_AND_AUTH_CODE);
 
-            final byte[] xmpXmlBytes = xmpXml.getBytes("utf-8");
+            final byte[] xmpXmlBytes = xmpXml.getBytes(StandardCharsets.UTF_8);
             bos.write(xmpXmlBytes);
 
             // write "magic trailer"
@@ -1048,18 +1048,14 @@ public class GifImageParser extends ImageParser {
                             "XMP block in GIF missing magic trailer.");
                 }
 
-                try {
-                    // XMP is UTF-8 encoded xml.
-                    final String xml = new String(
-                            blockBytes,
-                            XMP_APPLICATION_ID_AND_AUTH_CODE.length,
-                            blockBytes.length
-                                    - (XMP_APPLICATION_ID_AND_AUTH_CODE.length + GIF_MAGIC_TRAILER.length),
-                            "utf-8");
-                    result.add(xml);
-                } catch (final UnsupportedEncodingException e) {
-                    throw new ImageReadException("Invalid XMP Block in GIF.", e);
-                }
+                // XMP is UTF-8 encoded xml.
+                final String xml = new String(
+                        blockBytes,
+                        XMP_APPLICATION_ID_AND_AUTH_CODE.length,
+                        blockBytes.length
+                                - (XMP_APPLICATION_ID_AND_AUTH_CODE.length + GIF_MAGIC_TRAILER.length),
+                                StandardCharsets.UTF_8);
+                result.add(xml);
             }
 
             if (result.size() < 1) {

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/icns/IcnsType.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/icns/IcnsType.java b/src/main/java/org/apache/commons/imaging/formats/icns/IcnsType.java
index 276da92..7f71b9c 100644
--- a/src/main/java/org/apache/commons/imaging/formats/icns/IcnsType.java
+++ b/src/main/java/org/apache/commons/imaging/formats/icns/IcnsType.java
@@ -16,7 +16,7 @@
  */
 package org.apache.commons.imaging.formats.icns;
 
-import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
 
 enum IcnsType {
 
@@ -166,12 +166,7 @@ enum IcnsType {
     }
 
     public static int typeAsInt(final String type) {
-        byte[] bytes;
-        try {
-            bytes = type.getBytes("US-ASCII");
-        } catch (final UnsupportedEncodingException unsupportedEncodingException) {
-            throw new IllegalArgumentException("Your Java doesn't support US-ASCII", unsupportedEncodingException);
-        }
+        byte[] bytes = type.getBytes(StandardCharsets.US_ASCII);
         if (bytes.length != 4) {
             throw new IllegalArgumentException("Invalid ICNS type");
         }
@@ -187,10 +182,6 @@ enum IcnsType {
         bytes[1] = (byte) (0xff & (type >> 16));
         bytes[2] = (byte) (0xff & (type >> 8));
         bytes[3] = (byte) (0xff & type);
-        try {
-            return new String(bytes, "US-ASCII");
-        } catch (final UnsupportedEncodingException unsupportedEncodingException) {
-            throw new IllegalArgumentException("Your Java doesn't support US-ASCII", unsupportedEncodingException);
-        }
+        return new String(bytes, StandardCharsets.US_ASCII);
     }
 }

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageParser.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageParser.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageParser.java
index bcd54f2..c49a739 100644
--- a/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageParser.java
+++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageParser.java
@@ -20,8 +20,8 @@ import java.awt.Dimension;
 import java.awt.image.BufferedImage;
 import java.io.IOException;
 import java.io.PrintWriter;
-import java.io.UnsupportedEncodingException;
 import java.nio.ByteOrder;
+import java.nio.charset.StandardCharsets;
 import java.text.NumberFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -796,10 +796,7 @@ public class JpegImageParser extends ImageParser {
         for (final Segment commentSegment : commentSegments) {
             final ComSegment comSegment = (ComSegment) commentSegment;
             String comment = "";
-            try {
-                comment = new String(comSegment.getComment(), "UTF-8");
-            } catch (final UnsupportedEncodingException cannotHappen) { // NOPMD - can't happen
-            }
+            comment = new String(comSegment.getComment(), StandardCharsets.UTF_8);
             comments.add(comment);
         }
 

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcParser.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcParser.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcParser.java
index 7e5d687..907dc7e 100644
--- a/src/main/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcParser.java
+++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcParser.java
@@ -29,6 +29,7 @@ import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.ByteOrder;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
@@ -230,7 +231,7 @@ public class IptcParser extends BinaryFileParser {
             // continue;
             // }
 
-            final String value = new String(recordData, "ISO-8859-1");
+            final String value = new String(recordData, StandardCharsets.ISO_8859_1);
 
             final IptcType iptcType = IptcTypeLookup.getIptcType(recordType);
 
@@ -433,8 +434,8 @@ public class IptcParser extends BinaryFileParser {
                 }
                 bos.write(element.iptcType.getType());
 
-                final byte[] recordData = element.getValue().getBytes("ISO-8859-1");
-                if (!new String(recordData, "ISO-8859-1").equals(element.getValue())) {
+                final byte[] recordData = element.getValue().getBytes(StandardCharsets.ISO_8859_1);
+                if (!new String(recordData, StandardCharsets.ISO_8859_1).equals(element.getValue())) {
                     throw new ImageWriteException(
                             "Invalid record value, not ISO-8859-1");
                 }

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/App14Segment.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/App14Segment.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/App14Segment.java
index 2685666..b5c7a31 100644
--- a/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/App14Segment.java
+++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/App14Segment.java
@@ -19,7 +19,7 @@ package org.apache.commons.imaging.formats.jpeg.segments;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
 
 import static org.apache.commons.imaging.common.BinaryFunctions.*;
 
@@ -33,12 +33,7 @@ public class App14Segment extends AppnSegment {
     public static final int ADOBE_COLOR_TRANSFORM_YCCK = 2;
     
     static {
-        byte[] adobe = null;
-        try {
-            adobe = "Adobe".getBytes("US-ASCII");
-        } catch (final UnsupportedEncodingException cannotHappen) { // NOPMD - can't happen
-        }
-        ADOBE_PREFIX = adobe;
+        ADOBE_PREFIX = "Adobe".getBytes(StandardCharsets.US_ASCII);
     }
 
     public App14Segment(final int marker, final byte[] segmentData) throws IOException {

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpParser.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpParser.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpParser.java
index 90b28aa..38e2d47 100644
--- a/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpParser.java
+++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpParser.java
@@ -17,8 +17,8 @@
 
 package org.apache.commons.imaging.formats.jpeg.xmp;
 
-import java.io.UnsupportedEncodingException;
 import java.nio.ByteOrder;
+import java.nio.charset.StandardCharsets;
 
 import org.apache.commons.imaging.ImageReadException;
 import org.apache.commons.imaging.common.BinaryFileParser;
@@ -42,12 +42,8 @@ public class JpegXmpParser extends BinaryFileParser {
         }
         final int index = JpegConstants.XMP_IDENTIFIER.size();
 
-        try {
-            // segment data is UTF-8 encoded xml.
-            return new String(segmentData, index, segmentData.length - index, "utf-8");
-        } catch (final UnsupportedEncodingException e) {
-            throw new ImageReadException("Invalid JPEG XMP Segment.", e);
-        }
+        // segment data is UTF-8 encoded xml.
+        return new String(segmentData, index, segmentData.length - index, StandardCharsets.UTF_8);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpRewriter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpRewriter.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpRewriter.java
index 4b3656d..d2a67eb 100644
--- a/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpRewriter.java
+++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpRewriter.java
@@ -21,6 +21,7 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -176,7 +177,7 @@ public class JpegXmpRewriter extends JpegRewriter {
         pieces = removeXmpSegments(pieces);
 
         final List<JFIFPieceSegment> newPieces = new ArrayList<>();
-        final byte[] xmpXmlBytes = xmpXml.getBytes("utf-8");
+        final byte[] xmpXmlBytes = xmpXml.getBytes(StandardCharsets.UTF_8);
         int index = 0;
         while (index < xmpXmlBytes.length) {
             final int segmentSize = Math.min(xmpXmlBytes.length, JpegConstants.MAX_SEGMENT_SIZE);

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/png/ChunkType.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/png/ChunkType.java b/src/main/java/org/apache/commons/imaging/formats/png/ChunkType.java
index cd48648..1346808 100644
--- a/src/main/java/org/apache/commons/imaging/formats/png/ChunkType.java
+++ b/src/main/java/org/apache/commons/imaging/formats/png/ChunkType.java
@@ -16,7 +16,7 @@
  */
 package org.apache.commons.imaging.formats.png;
 
-import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
 
 import org.apache.commons.imaging.common.BinaryFunctions;
 
@@ -89,12 +89,7 @@ public enum ChunkType {
 
     private ChunkType() {
         final char[] chars = name().toCharArray();
-        try {
-            array = name().getBytes("UTF-8");
-        } catch (final UnsupportedEncodingException e) {
-            // will not happen since UTF-8 is one of the StandardCharsets of the Java platform
-            throw new RuntimeException(e);
-        }
+        array = name().getBytes(StandardCharsets.UTF_8);
         value = BinaryFunctions.charsToQuad(chars[0], chars[1], chars[2], chars[3]);
     }
 }

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/png/PngWriter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/png/PngWriter.java b/src/main/java/org/apache/commons/imaging/formats/png/PngWriter.java
index f08f882..0d5869d 100644
--- a/src/main/java/org/apache/commons/imaging/formats/png/PngWriter.java
+++ b/src/main/java/org/apache/commons/imaging/formats/png/PngWriter.java
@@ -20,7 +20,7 @@ import java.awt.image.BufferedImage;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -134,21 +134,21 @@ class PngWriter {
         final ByteArrayOutputStream baos = new ByteArrayOutputStream();
 
         // keyword
-        baos.write(text.keyword.getBytes("ISO-8859-1"));
+        baos.write(text.keyword.getBytes(StandardCharsets.ISO_8859_1));
         baos.write(0);
 
         baos.write(1); // compressed flag, true
         baos.write(PngConstants.COMPRESSION_DEFLATE_INFLATE); // compression method
 
         // language tag
-        baos.write(text.languageTag.getBytes("ISO-8859-1"));
+        baos.write(text.languageTag.getBytes(StandardCharsets.ISO_8859_1));
         baos.write(0);
 
         // translated keyword
-        baos.write(text.translatedKeyword.getBytes("utf-8"));
+        baos.write(text.translatedKeyword.getBytes(StandardCharsets.UTF_8));
         baos.write(0);
 
-        baos.write(deflate(text.text.getBytes("utf-8")));
+        baos.write(deflate(text.text.getBytes(StandardCharsets.UTF_8)));
 
         writeChunk(os, ChunkType.iTXt, baos.toByteArray());
     }
@@ -165,14 +165,14 @@ class PngWriter {
         final ByteArrayOutputStream baos = new ByteArrayOutputStream();
 
         // keyword
-        baos.write(text.keyword.getBytes("ISO-8859-1"));
+        baos.write(text.keyword.getBytes(StandardCharsets.ISO_8859_1));
         baos.write(0);
 
         // compression method
         baos.write(PngConstants.COMPRESSION_DEFLATE_INFLATE);
 
         // text
-        baos.write(deflate(text.text.getBytes("ISO-8859-1")));
+        baos.write(deflate(text.text.getBytes(StandardCharsets.ISO_8859_1)));
 
         writeChunk(os, ChunkType.zTXt, baos.toByteArray());
     }
@@ -189,11 +189,11 @@ class PngWriter {
         final ByteArrayOutputStream baos = new ByteArrayOutputStream();
 
         // keyword
-        baos.write(text.keyword.getBytes("ISO-8859-1"));
+        baos.write(text.keyword.getBytes(StandardCharsets.ISO_8859_1));
         baos.write(0);
 
         // text
-        baos.write(text.text.getBytes("ISO-8859-1"));
+        baos.write(text.text.getBytes(StandardCharsets.ISO_8859_1));
 
         writeChunk(os, ChunkType.tEXt, baos.toByteArray());
     }
@@ -209,13 +209,8 @@ class PngWriter {
     }
     
     private boolean isValidISO_8859_1(final String s) {
-        try {
-            final String roundtrip = new String(s.getBytes("ISO-8859-1"), "ISO-8859-1");
-            return s.equals(roundtrip);
-        } catch (final UnsupportedEncodingException e) {
-            // should never be thrown.
-            throw new RuntimeException("Error parsing string.", e);
-        }
+        final String roundtrip = new String(s.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.ISO_8859_1);
+        return s.equals(roundtrip);
     }
     
     private void writeChunkXmpiTXt(final OutputStream os, final String xmpXml)
@@ -224,7 +219,7 @@ class PngWriter {
         final ByteArrayOutputStream baos = new ByteArrayOutputStream();
 
         // keyword
-        baos.write(PngConstants.XMP_KEYWORD.getBytes("ISO-8859-1"));
+        baos.write(PngConstants.XMP_KEYWORD.getBytes(StandardCharsets.ISO_8859_1));
         baos.write(0);
 
         baos.write(1); // compressed flag, true
@@ -233,10 +228,10 @@ class PngWriter {
         baos.write(0); // language tag (ignore). TODO
 
         // translated keyword
-        baos.write(PngConstants.XMP_KEYWORD.getBytes("utf-8"));
+        baos.write(PngConstants.XMP_KEYWORD.getBytes(StandardCharsets.UTF_8));
         baos.write(0);
 
-        baos.write(deflate(xmpXml.getBytes("utf-8")));
+        baos.write(deflate(xmpXml.getBytes(StandardCharsets.UTF_8)));
 
         writeChunk(os, ChunkType.iTXt, baos.toByteArray());
     }
@@ -301,10 +296,10 @@ class PngWriter {
         baos.write(units);
 
         // units per pixel, x-axis
-        baos.write(String.valueOf(xUPP).getBytes("ISO-8859-1"));
+        baos.write(String.valueOf(xUPP).getBytes(StandardCharsets.ISO_8859_1));
         baos.write(0);
 
-        baos.write(String.valueOf(yUPP).getBytes("ISO-8859-1"));
+        baos.write(String.valueOf(yUPP).getBytes(StandardCharsets.ISO_8859_1));
 
         writeChunk(os, ChunkType.sCAL, baos.toByteArray());
     }

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkIccp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkIccp.java b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkIccp.java
index 8ee50d7..21e476e 100644
--- a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkIccp.java
+++ b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkIccp.java
@@ -18,6 +18,7 @@ package org.apache.commons.imaging.formats.png.chunks;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 import java.util.zip.InflaterInputStream;
 
 import org.apache.commons.imaging.ImageReadException;
@@ -48,7 +49,7 @@ public class PngChunkIccp extends PngChunk {
         }
         final byte[] nameBytes = new byte[index];
         System.arraycopy(bytes, 0, nameBytes, 0, index);
-        profileName = new String(nameBytes, "ISO-8859-1");
+        profileName = new String(nameBytes, StandardCharsets.ISO_8859_1);
 
         compressionMethod = bytes[index + 1];
 

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkItxt.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkItxt.java b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkItxt.java
index bd16af1..73dd19b 100644
--- a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkItxt.java
+++ b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkItxt.java
@@ -18,6 +18,7 @@ package org.apache.commons.imaging.formats.png.chunks;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 import java.util.zip.InflaterInputStream;
 
 import org.apache.commons.imaging.ImageReadException;
@@ -52,7 +53,7 @@ public class PngChunkItxt extends PngTextChunk {
                     "PNG iTXt chunk keyword is not terminated.");
         }
 
-        keyword = new String(bytes, 0, terminator, "ISO-8859-1");
+        keyword = new String(bytes, 0, terminator, StandardCharsets.ISO_8859_1);
         int index = terminator + 1;
 
         final int compressionFlag = bytes[index++];
@@ -74,7 +75,7 @@ public class PngChunkItxt extends PngTextChunk {
             throw new ImageReadException("PNG iTXt chunk language tag is not terminated.");
         }
 
-        languageTag = new String(bytes, index, terminator - index, "ISO-8859-1");
+        languageTag = new String(bytes, index, terminator - index, StandardCharsets.ISO_8859_1);
         index = terminator + 1;
 
         terminator = findNull(bytes, index);
@@ -82,7 +83,7 @@ public class PngChunkItxt extends PngTextChunk {
             throw new ImageReadException("PNG iTXt chunk translated keyword is not terminated.");
         }
 
-        translatedKeyword = new String(bytes, index, terminator - index, "utf-8");
+        translatedKeyword = new String(bytes, index, terminator - index, StandardCharsets.UTF_8);
         index = terminator + 1;
 
         if (compressed) {
@@ -92,10 +93,10 @@ public class PngChunkItxt extends PngTextChunk {
             System.arraycopy(bytes, index, compressedText, 0, compressedTextLength);
 
             text = new String(getStreamBytes(
-                    new InflaterInputStream(new ByteArrayInputStream(compressedText))), "utf-8");
+                    new InflaterInputStream(new ByteArrayInputStream(compressedText))), StandardCharsets.UTF_8);
 
         } else {
-            text = new String(bytes, index, bytes.length - index, "utf-8");
+            text = new String(bytes, index, bytes.length - index, StandardCharsets.UTF_8);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkScal.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkScal.java b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkScal.java
index f4c8823..56f5d4b 100644
--- a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkScal.java
+++ b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkScal.java
@@ -19,6 +19,7 @@ package org.apache.commons.imaging.formats.png.chunks;
 import org.apache.commons.imaging.ImageReadException;
 
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 
 import static org.apache.commons.imaging.common.BinaryFunctions.findNull;
 
@@ -42,7 +43,7 @@ public class PngChunkScal extends PngChunk {
       }
 
       final int xIndex = 1;
-      final String xStr = new String(bytes, xIndex, separator - 1, "ISO-8859-1");
+      final String xStr = new String(bytes, xIndex, separator - 1, StandardCharsets.ISO_8859_1);
       unitsPerPixelXAxis = toDouble(xStr);
 
       final int yIndex = separator + 1;
@@ -50,7 +51,7 @@ public class PngChunkScal extends PngChunk {
          throw new ImageReadException("PNG sCAL chunk missing the y axis value.");
       }
 
-      final String yStr = new String(bytes, yIndex, length - yIndex, "ISO-8859-1");
+      final String yStr = new String(bytes, yIndex, length - yIndex, StandardCharsets.ISO_8859_1);
       unitsPerPixelYAxis = toDouble(yStr);
    }
 

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkText.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkText.java b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkText.java
index 271b237..fd6d9b8 100644
--- a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkText.java
+++ b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkText.java
@@ -17,6 +17,7 @@
 package org.apache.commons.imaging.formats.png.chunks;
 
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 
 import org.apache.commons.imaging.ImageReadException;
 import org.apache.commons.imaging.formats.png.PngText;
@@ -36,10 +37,10 @@ public class PngChunkText extends PngTextChunk {
                     "PNG tEXt chunk keyword is not terminated.");
         }
 
-        keyword = new String(bytes, 0, index, "ISO-8859-1");
+        keyword = new String(bytes, 0, index, StandardCharsets.ISO_8859_1);
 
         final int textLength = bytes.length - (index + 1);
-        text = new String(bytes, index + 1, textLength, "ISO-8859-1");
+        text = new String(bytes, index + 1, textLength, StandardCharsets.ISO_8859_1);
 
         if (getDebug()) {
             System.out.println("Keyword: " + keyword);

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkZtxt.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkZtxt.java b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkZtxt.java
index a7afd43..6a90a3f 100644
--- a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkZtxt.java
+++ b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkZtxt.java
@@ -18,6 +18,7 @@ package org.apache.commons.imaging.formats.png.chunks;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 import java.util.zip.InflaterInputStream;
 
 import org.apache.commons.imaging.ImageReadException;
@@ -41,7 +42,7 @@ public class PngChunkZtxt extends PngTextChunk {
                     "PNG zTXt chunk keyword is unterminated.");
         }
 
-        keyword = new String(bytes, 0, index, "ISO-8859-1");
+        keyword = new String(bytes, 0, index, StandardCharsets.ISO_8859_1);
         index++;
 
         final int compressionMethod = bytes[index++];
@@ -55,7 +56,7 @@ public class PngChunkZtxt extends PngTextChunk {
         final byte[] compressedText = new byte[compressedTextLength];
         System.arraycopy(bytes, index, compressedText, 0, compressedTextLength);
 
-        text = new String(getStreamBytes(new InflaterInputStream(new ByteArrayInputStream(compressedText))), "ISO-8859-1");
+        text = new String(getStreamBytes(new InflaterInputStream(new ByteArrayInputStream(compressedText))), StandardCharsets.ISO_8859_1);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/pnm/PamWriter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/pnm/PamWriter.java b/src/main/java/org/apache/commons/imaging/formats/pnm/PamWriter.java
index e7c34b4..31429aa 100644
--- a/src/main/java/org/apache/commons/imaging/formats/pnm/PamWriter.java
+++ b/src/main/java/org/apache/commons/imaging/formats/pnm/PamWriter.java
@@ -20,6 +20,7 @@ package org.apache.commons.imaging.formats.pnm;
 import java.awt.image.BufferedImage;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.Map;
 
 import org.apache.commons.imaging.ImageWriteException;
@@ -37,22 +38,22 @@ class PamWriter implements PnmWriter {
         final int width = src.getWidth();
         final int height = src.getHeight();
 
-        os.write(("WIDTH " + width).getBytes("US-ASCII"));
+        os.write(("WIDTH " + width).getBytes(StandardCharsets.US_ASCII));
         os.write(PnmConstants.PNM_NEWLINE);
 
-        os.write(("HEIGHT " + height).getBytes("US-ASCII"));
+        os.write(("HEIGHT " + height).getBytes(StandardCharsets.US_ASCII));
         os.write(PnmConstants.PNM_NEWLINE);
         
-        os.write(("DEPTH 4").getBytes("US-ASCII"));
+        os.write(("DEPTH 4").getBytes(StandardCharsets.US_ASCII));
         os.write(PnmConstants.PNM_NEWLINE);
         
-        os.write(("MAXVAL 255").getBytes("US-ASCII"));
+        os.write(("MAXVAL 255").getBytes(StandardCharsets.US_ASCII));
         os.write(PnmConstants.PNM_NEWLINE);
 
-        os.write(("TUPLTYPE RGB_ALPHA").getBytes("US-ASCII"));
+        os.write(("TUPLTYPE RGB_ALPHA").getBytes(StandardCharsets.US_ASCII));
         os.write(PnmConstants.PNM_NEWLINE);
         
-        os.write(("ENDHDR").getBytes("US-ASCII"));
+        os.write(("ENDHDR").getBytes(StandardCharsets.US_ASCII));
         os.write(PnmConstants.PNM_NEWLINE);
         
         for (int y = 0; y < height; y++) {

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/pnm/PbmWriter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/pnm/PbmWriter.java b/src/main/java/org/apache/commons/imaging/formats/pnm/PbmWriter.java
index 088a038..05df172 100644
--- a/src/main/java/org/apache/commons/imaging/formats/pnm/PbmWriter.java
+++ b/src/main/java/org/apache/commons/imaging/formats/pnm/PbmWriter.java
@@ -19,6 +19,7 @@ package org.apache.commons.imaging.formats.pnm;
 import java.awt.image.BufferedImage;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.Map;
 
 import org.apache.commons.imaging.ImageWriteException;
@@ -41,10 +42,10 @@ class PbmWriter implements PnmWriter {
         final int width = src.getWidth();
         final int height = src.getHeight();
 
-        os.write(Integer.toString(width).getBytes("US-ASCII"));
+        os.write(Integer.toString(width).getBytes(StandardCharsets.US_ASCII));
         os.write(PnmConstants.PNM_SEPARATOR);
 
-        os.write(Integer.toString(height).getBytes("US-ASCII"));
+        os.write(Integer.toString(height).getBytes(StandardCharsets.US_ASCII));
         os.write(PnmConstants.PNM_NEWLINE);
 
         int bitcache = 0;
@@ -73,7 +74,7 @@ class PbmWriter implements PnmWriter {
                         bitsInCache = 0;
                     }
                 } else {
-                    os.write(Integer.toString(sample).getBytes("US-ASCII")); // max
+                    os.write(Integer.toString(sample).getBytes(StandardCharsets.US_ASCII)); // max
                                                                   // component
                                                                   // value
                     os.write(PnmConstants.PNM_SEPARATOR);

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/pnm/PgmWriter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/pnm/PgmWriter.java b/src/main/java/org/apache/commons/imaging/formats/pnm/PgmWriter.java
index caed6a7..97563a0 100644
--- a/src/main/java/org/apache/commons/imaging/formats/pnm/PgmWriter.java
+++ b/src/main/java/org/apache/commons/imaging/formats/pnm/PgmWriter.java
@@ -19,6 +19,7 @@ package org.apache.commons.imaging.formats.pnm;
 import java.awt.image.BufferedImage;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.Map;
 
 import org.apache.commons.imaging.ImageWriteException;
@@ -43,13 +44,13 @@ class PgmWriter implements PnmWriter {
         final int width = src.getWidth();
         final int height = src.getHeight();
 
-        os.write(Integer.toString(width).getBytes("US-ASCII"));
+        os.write(Integer.toString(width).getBytes(StandardCharsets.US_ASCII));
         os.write(PnmConstants.PNM_SEPARATOR);
 
-        os.write(Integer.toString(height).getBytes("US-ASCII"));
+        os.write(Integer.toString(height).getBytes(StandardCharsets.US_ASCII));
         os.write(PnmConstants.PNM_SEPARATOR);
 
-        os.write(Integer.toString(255).getBytes("US-ASCII")); // max component value
+        os.write(Integer.toString(255).getBytes(StandardCharsets.US_ASCII)); // max component value
         os.write(PnmConstants.PNM_NEWLINE);
 
         for (int y = 0; y < height; y++) {
@@ -63,7 +64,7 @@ class PgmWriter implements PnmWriter {
                 if (rawbits) {
                     os.write((byte) sample);
                 } else {
-                    os.write(Integer.toString(sample).getBytes("US-ASCII")); // max component value
+                    os.write(Integer.toString(sample).getBytes(StandardCharsets.US_ASCII)); // max component value
                     os.write(PnmConstants.PNM_SEPARATOR);
                 }
             }

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/pnm/PpmWriter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/pnm/PpmWriter.java b/src/main/java/org/apache/commons/imaging/formats/pnm/PpmWriter.java
index 146f2eb..1bea15f 100644
--- a/src/main/java/org/apache/commons/imaging/formats/pnm/PpmWriter.java
+++ b/src/main/java/org/apache/commons/imaging/formats/pnm/PpmWriter.java
@@ -19,6 +19,7 @@ package org.apache.commons.imaging.formats.pnm;
 import java.awt.image.BufferedImage;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.Map;
 
 import org.apache.commons.imaging.ImageWriteException;
@@ -43,13 +44,13 @@ class PpmWriter implements PnmWriter {
         final int width = src.getWidth();
         final int height = src.getHeight();
 
-        os.write(Integer.toString(width).getBytes("US-ASCII"));
+        os.write(Integer.toString(width).getBytes(StandardCharsets.US_ASCII));
         os.write(PnmConstants.PNM_SEPARATOR);
 
-        os.write(Integer.toString(height).getBytes("US-ASCII"));
+        os.write(Integer.toString(height).getBytes(StandardCharsets.US_ASCII));
         os.write(PnmConstants.PNM_SEPARATOR);
 
-        os.write(Integer.toString(255).getBytes("US-ASCII")); // max component value
+        os.write(Integer.toString(255).getBytes(StandardCharsets.US_ASCII)); // max component value
         os.write(PnmConstants.PNM_NEWLINE);
 
         for (int y = 0; y < height; y++) {
@@ -64,14 +65,14 @@ class PpmWriter implements PnmWriter {
                     os.write((byte) green);
                     os.write((byte) blue);
                 } else {
-                    os.write(Integer.toString(red).getBytes("US-ASCII")); // max component
+                    os.write(Integer.toString(red).getBytes(StandardCharsets.US_ASCII)); // max component
                                                                // value
                     os.write(PnmConstants.PNM_SEPARATOR);
-                    os.write(Integer.toString(green).getBytes("US-ASCII")); // max
+                    os.write(Integer.toString(green).getBytes(StandardCharsets.US_ASCII)); // max
                                                                  // component
                                                                  // value
                     os.write(PnmConstants.PNM_SEPARATOR);
-                    os.write(Integer.toString(blue).getBytes("US-ASCII")); // max component
+                    os.write(Integer.toString(blue).getBytes(StandardCharsets.US_ASCII)); // max component
                                                                 // value
                     os.write(PnmConstants.PNM_SEPARATOR);
                 }

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/psd/ImageResourceBlock.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/psd/ImageResourceBlock.java b/src/main/java/org/apache/commons/imaging/formats/psd/ImageResourceBlock.java
index 56c41ad..73c24e7 100644
--- a/src/main/java/org/apache/commons/imaging/formats/psd/ImageResourceBlock.java
+++ b/src/main/java/org/apache/commons/imaging/formats/psd/ImageResourceBlock.java
@@ -16,7 +16,7 @@
  */
 package org.apache.commons.imaging.formats.psd;
 
-import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
 
 import org.apache.commons.imaging.util.Debug;
 
@@ -31,8 +31,8 @@ class ImageResourceBlock {
         this.data = data;
     }
 
-    String getName() throws UnsupportedEncodingException {
+    String getName() {
         Debug.debug("getName: " + nameData.length);
-        return new String(nameData, "ISO-8859-1");
+        return new String(nameData, StandardCharsets.ISO_8859_1);
     }
 }

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/psd/PsdImageParser.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/psd/PsdImageParser.java b/src/main/java/org/apache/commons/imaging/formats/psd/PsdImageParser.java
index 5dc1417..3ebf877 100644
--- a/src/main/java/org/apache/commons/imaging/formats/psd/PsdImageParser.java
+++ b/src/main/java/org/apache/commons/imaging/formats/psd/PsdImageParser.java
@@ -29,8 +29,8 @@ import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.PrintWriter;
-import java.io.UnsupportedEncodingException;
 import java.nio.ByteOrder;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -549,7 +549,7 @@ public class PsdImageParser extends ImageParser {
             final ImageResourceBlock block = blocks.get(i);
             pw.println("\t" + i + " (" + Integer.toHexString(block.id)
                     + ", " + "'"
-                    + new String(block.nameData, "ISO-8859-1")
+                    + new String(block.nameData, StandardCharsets.ISO_8859_1)
                     + "' ("
                     + block.nameData.length
                     + "), "
@@ -729,12 +729,8 @@ public class PsdImageParser extends ImageParser {
 
         final ImageResourceBlock block = xmpBlocks.get(0);
 
-        try {
-            // segment data is UTF-8 encoded xml.
-            return new String(block.data, 0, block.data.length, "utf-8");
-        } catch (final UnsupportedEncodingException e) {
-            throw new ImageReadException("Invalid JPEG XMP Segment.", e);
-        }
+        // segment data is UTF-8 encoded xml.
+        return new String(block.data, 0, block.data.length, StandardCharsets.UTF_8);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageParser.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageParser.java b/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageParser.java
index 5aa653f..d706db0 100644
--- a/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageParser.java
+++ b/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageParser.java
@@ -22,8 +22,8 @@ import java.awt.image.BufferedImage;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.PrintWriter;
-import java.io.UnsupportedEncodingException;
 import java.nio.ByteOrder;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -315,13 +315,8 @@ public class TiffImageParser extends ImageParser {
             return null;
         }
 
-        try {
-            // segment data is UTF-8 encoded xml.
-            final String xml = new String(bytes, "utf-8");
-            return xml;
-        } catch (final UnsupportedEncodingException e) {
-            throw new ImageReadException("Invalid JPEG XMP Segment.", e);
-        }
+        // segment data is UTF-8 encoded xml.
+        return new String(bytes, StandardCharsets.UTF_8);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/tiff/fieldtypes/FieldTypeAscii.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/fieldtypes/FieldTypeAscii.java b/src/main/java/org/apache/commons/imaging/formats/tiff/fieldtypes/FieldTypeAscii.java
index cc7e71d..2ab66e5 100644
--- a/src/main/java/org/apache/commons/imaging/formats/tiff/fieldtypes/FieldTypeAscii.java
+++ b/src/main/java/org/apache/commons/imaging/formats/tiff/fieldtypes/FieldTypeAscii.java
@@ -16,8 +16,8 @@
  */
 package org.apache.commons.imaging.formats.tiff.fieldtypes;
 
-import java.io.UnsupportedEncodingException;
 import java.nio.ByteOrder;
+import java.nio.charset.StandardCharsets;
 
 import org.apache.commons.imaging.ImageWriteException;
 import org.apache.commons.imaging.formats.tiff.TiffField;
@@ -47,23 +47,17 @@ public class FieldTypeAscii extends FieldType {
         // Exiftool however allows you to configure the charset used.
         for (int i = 0; i < bytes.length; i++) {
             if (bytes[i] == 0) {
-                try {
-                    final String string = new String(bytes, nextStringPos, i
-                            - nextStringPos, "UTF-8");
-                    strings[stringsAdded++] = string;
-                } catch (final UnsupportedEncodingException unsupportedEncoding) { // NOPMD
-                }
+                final String string = new String(bytes, nextStringPos, i
+                        - nextStringPos, StandardCharsets.UTF_8);
+                strings[stringsAdded++] = string;
                 nextStringPos = i + 1;
             }
         }
         if (nextStringPos < bytes.length) {
             // Buggy file, string wasn't null terminated
-            try {
-                final String string = new String(bytes, nextStringPos, bytes.length
-                        - nextStringPos, "UTF-8");
-                strings[stringsAdded++] = string;
-            } catch (final UnsupportedEncodingException unsupportedEncoding) { // NOPMD
-            }
+            final String string = new String(bytes, nextStringPos, bytes.length
+                    - nextStringPos, StandardCharsets.UTF_8);
+            strings[stringsAdded++] = string;
         }
         if (strings.length == 1) {
             return strings[0];
@@ -80,12 +74,7 @@ public class FieldTypeAscii extends FieldType {
             result[result.length - 1] = 0;
             return result;
         } else if (o instanceof String) {
-            byte[] bytes;
-            try {
-                bytes = ((String) o).getBytes("UTF-8");
-            } catch (final UnsupportedEncodingException cannotHappen) {
-                throw new IllegalArgumentException("Your Java doesn't support UTF-8", cannotHappen);
-            }
+            byte[] bytes = ((String) o).getBytes(StandardCharsets.UTF_8);
             final byte[] result = new byte[bytes.length + 1];
             System.arraycopy(bytes, 0, result, 0, bytes.length);
             result[result.length - 1] = 0;
@@ -94,23 +83,13 @@ public class FieldTypeAscii extends FieldType {
             final String[] strings = (String[]) o;
             int totalLength = 0;
             for (final String string : strings) {
-                byte[] bytes;
-                try {
-                    bytes = string.getBytes("UTF-8");
-                } catch (final UnsupportedEncodingException cannotHappen) {
-                    throw new IllegalArgumentException("Your Java doesn't support UTF-8", cannotHappen);
-                }
+                byte[] bytes = string.getBytes(StandardCharsets.UTF_8);
                 totalLength += (bytes.length + 1);
             }
             final byte[] result = new byte[totalLength];
             int position = 0;
             for (final String string : strings) {
-                byte[] bytes;
-                try {
-                    bytes = string.getBytes("UTF-8");
-                } catch (final UnsupportedEncodingException cannotHappen) {
-                    throw new IllegalArgumentException("Your Java doesn't support UTF-8", cannotHappen);
-                }
+                byte[] bytes = string.getBytes(StandardCharsets.UTF_8);
                 System.arraycopy(bytes, 0, result, position, bytes.length);
                 position += (bytes.length + 1);
             }

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoAscii.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoAscii.java b/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoAscii.java
index 42dc7d1..a7d7948 100644
--- a/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoAscii.java
+++ b/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoAscii.java
@@ -16,8 +16,8 @@
  */
 package org.apache.commons.imaging.formats.tiff.taginfos;
 
-import java.io.UnsupportedEncodingException;
 import java.nio.ByteOrder;
+import java.nio.charset.StandardCharsets;
 
 import org.apache.commons.imaging.ImageWriteException;
 import org.apache.commons.imaging.formats.tiff.constants.TiffDirectoryType;
@@ -45,23 +45,17 @@ public class TagInfoAscii extends TagInfo {
         // Exiftool however allows you to configure the charset used.
         for (int i = 0; i < bytes.length; i++) {
             if (bytes[i] == 0) {
-                try {
-                    final String string = new String(bytes, nextStringPos, i
-                            - nextStringPos, "UTF-8");
-                    strings[stringsAdded++] = string;
-                } catch (final UnsupportedEncodingException unsupportedEncoding) { // NOPMD
-                }
+                final String string = new String(bytes, nextStringPos, i
+                        - nextStringPos, StandardCharsets.UTF_8);
+                strings[stringsAdded++] = string;
                 nextStringPos = i + 1;
             }
         }
         if (nextStringPos < bytes.length) {
             // Buggy file, string wasn't null terminated
-            try {
-                final String string = new String(bytes, nextStringPos, bytes.length
-                        - nextStringPos, "UTF-8");
-                strings[stringsAdded++] = string;
-            } catch (final UnsupportedEncodingException unsupportedEncoding) { // NOPMD
-            }
+            final String string = new String(bytes, nextStringPos, bytes.length
+                    - nextStringPos, StandardCharsets.UTF_8);
+            strings[stringsAdded++] = string;
         }
         return strings;
     }

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoGpsText.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoGpsText.java b/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoGpsText.java
index b34e64f..8973dae 100644
--- a/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoGpsText.java
+++ b/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoGpsText.java
@@ -18,6 +18,7 @@ package org.apache.commons.imaging.formats.tiff.taginfos;
 
 import java.io.UnsupportedEncodingException;
 import java.nio.ByteOrder;
+import java.nio.charset.StandardCharsets;
 
 import org.apache.commons.imaging.ImageReadException;
 import org.apache.commons.imaging.ImageWriteException;
@@ -147,12 +148,8 @@ public final class TagInfoGpsText extends TagInfo {
 
         final byte[] bytes = entry.getByteArrayValue();
         if (bytes.length < 8) {
-            try {
-                // try ASCII, with NO prefix.
-                return new String(bytes, "US-ASCII");
-            } catch (final UnsupportedEncodingException e) {
-                throw new ImageReadException("GPS text field missing encoding prefix.", e);
-            }
+            // try ASCII, with NO prefix.
+            return new String(bytes, StandardCharsets.US_ASCII);
         }
 
         for (final TextEncoding encoding : TEXT_ENCODINGS) {
@@ -176,12 +173,7 @@ public final class TagInfoGpsText extends TagInfo {
             }
         }
 
-        try {
-            // try ASCII, with NO prefix.
-            return new String(bytes, "US-ASCII");
-        } catch (final UnsupportedEncodingException e) {
-            throw new ImageReadException("Unknown GPS text encoding prefix.", e);
-        }
-
+        // try ASCII, with NO prefix.
+        return new String(bytes, StandardCharsets.US_ASCII);
     }
 }

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoXpString.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoXpString.java b/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoXpString.java
index a577fd4..7291d4c 100644
--- a/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoXpString.java
+++ b/src/main/java/org/apache/commons/imaging/formats/tiff/taginfos/TagInfoXpString.java
@@ -16,8 +16,8 @@
  */
 package org.apache.commons.imaging.formats.tiff.taginfos;
 
-import java.io.UnsupportedEncodingException;
 import java.nio.ByteOrder;
+import java.nio.charset.StandardCharsets;
 
 import org.apache.commons.imaging.ImageReadException;
 import org.apache.commons.imaging.ImageWriteException;
@@ -41,14 +41,10 @@ public class TagInfoXpString extends TagInfo {
             throw new ImageWriteException("Text value not String", value);
         }
         final String s = (String) value;
-        try {
-            final byte[] bytes = s.getBytes("UTF-16LE");
-            final byte[] paddedBytes = new byte[bytes.length + 2];
-            System.arraycopy(bytes, 0, paddedBytes, 0, bytes.length);
-            return paddedBytes;
-        } catch (final UnsupportedEncodingException cannotHappen) {
-            return null;
-        }
+        final byte[] bytes = s.getBytes(StandardCharsets.UTF_16LE);
+        final byte[] paddedBytes = new byte[bytes.length + 2];
+        System.arraycopy(bytes, 0, paddedBytes, 0, bytes.length);
+        return paddedBytes;
     }
 
     @Override
@@ -56,17 +52,13 @@ public class TagInfoXpString extends TagInfo {
         if (entry.getFieldType() != FieldType.BYTE) {
             throw new ImageReadException("Text field not encoded as bytes.");
         }
-        try {
-            final byte[] bytes = entry.getByteArrayValue();
-            final int length;
-            if (bytes.length >= 2 && bytes[bytes.length - 1] == 0 && bytes[bytes.length - 2] == 0) {
-                length = bytes.length - 2;
-            } else {
-                length = bytes.length;
-            }
-            return new String(bytes, 0, length, "UTF-16LE");
-        } catch (final UnsupportedEncodingException cannotHappen) {
-            return null;
+        final byte[] bytes = entry.getByteArrayValue();
+        final int length;
+        if (bytes.length >= 2 && bytes[bytes.length - 1] == 0 && bytes[bytes.length - 2] == 0) {
+            length = bytes.length - 2;
+        } else {
+            length = bytes.length;
         }
+        return new String(bytes, 0, length, StandardCharsets.UTF_16LE);
     }
 }

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/tiff/write/TiffImageWriterBase.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/write/TiffImageWriterBase.java b/src/main/java/org/apache/commons/imaging/formats/tiff/write/TiffImageWriterBase.java
index aeffa81..6c09b49 100644
--- a/src/main/java/org/apache/commons/imaging/formats/tiff/write/TiffImageWriterBase.java
+++ b/src/main/java/org/apache/commons/imaging/formats/tiff/write/TiffImageWriterBase.java
@@ -20,6 +20,7 @@ import java.awt.image.BufferedImage;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.nio.ByteOrder;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -480,7 +481,7 @@ public abstract class TiffImageWriterBase {
             }
 
             if (null != xmpXml) {
-                final byte[] xmpXmlBytes = xmpXml.getBytes("utf-8");
+                final byte[] xmpXmlBytes = xmpXml.getBytes(StandardCharsets.UTF_8);
                 directory.add(TiffTagConstants.TIFF_TAG_XMP, xmpXmlBytes);
             }
 

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/xbm/XbmImageParser.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/xbm/XbmImageParser.java b/src/main/java/org/apache/commons/imaging/formats/xbm/XbmImageParser.java
index c263dbc..01c8809 100644
--- a/src/main/java/org/apache/commons/imaging/formats/xbm/XbmImageParser.java
+++ b/src/main/java/org/apache/commons/imaging/formats/xbm/XbmImageParser.java
@@ -30,6 +30,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.PrintWriter;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Map;
@@ -342,9 +343,9 @@ public class XbmImageParser extends ImageParser {
 
         final String name = randomName();
 
-        os.write(("#define " + name + "_width " + src.getWidth() + "\n").getBytes("US-ASCII"));
-        os.write(("#define " + name + "_height " + src.getHeight() + "\n").getBytes("US-ASCII"));
-        os.write(("static unsigned char " + name + "_bits[] = {").getBytes("US-ASCII"));
+        os.write(("#define " + name + "_width " + src.getWidth() + "\n").getBytes(StandardCharsets.US_ASCII));
+        os.write(("#define " + name + "_height " + src.getHeight() + "\n").getBytes(StandardCharsets.US_ASCII));
+        os.write(("static unsigned char " + name + "_bits[] = {").getBytes(StandardCharsets.US_ASCII));
 
         int bitcache = 0;
         int bitsInCache = 0;
@@ -365,33 +366,33 @@ public class XbmImageParser extends ImageParser {
                 bitcache |= (sample << bitsInCache);
                 ++bitsInCache;
                 if (bitsInCache == 8) {
-                    os.write(separator.getBytes("US-ASCII"));
+                    os.write(separator.getBytes(StandardCharsets.US_ASCII));
                     separator = ",";
                     if (written == 12) {
-                        os.write("\n  ".getBytes("US-ASCII"));
+                        os.write("\n  ".getBytes(StandardCharsets.US_ASCII));
                         written = 0;
                     }
-                    os.write(toPrettyHex(bitcache).getBytes("US-ASCII"));
+                    os.write(toPrettyHex(bitcache).getBytes(StandardCharsets.US_ASCII));
                     bitcache = 0;
                     bitsInCache = 0;
                     ++written;
                 }
             }
             if (bitsInCache != 0) {
-                os.write(separator.getBytes("US-ASCII"));
+                os.write(separator.getBytes(StandardCharsets.US_ASCII));
                 separator = ",";
                 if (written == 12) {
-                    os.write("\n  ".getBytes("US-ASCII"));
+                    os.write("\n  ".getBytes(StandardCharsets.US_ASCII));
                     written = 0;
                 }
-                os.write(toPrettyHex(bitcache).getBytes("US-ASCII"));
+                os.write(toPrettyHex(bitcache).getBytes(StandardCharsets.US_ASCII));
                 bitcache = 0;
                 bitsInCache = 0;
                 ++written;
             }
         }
 
-        os.write("\n};\n".getBytes("US-ASCII"));
+        os.write("\n};\n".getBytes(StandardCharsets.US_ASCII));
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImageParser.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImageParser.java b/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImageParser.java
index 291d8d2..7c78b45 100644
--- a/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImageParser.java
+++ b/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImageParser.java
@@ -32,6 +32,7 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.io.PrintWriter;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -79,7 +80,7 @@ public class XpmImageParser extends ImageParser {
                     throw new ImageReadException("Couldn't find rgb.txt in our resources");
                 }
                 final Map<String, Integer> colors = new HashMap<>();
-                try (InputStreamReader isReader = new InputStreamReader(rgbTxtStream, "US-ASCII");
+                try (InputStreamReader isReader = new InputStreamReader(rgbTxtStream, StandardCharsets.US_ASCII);
                         BufferedReader reader = new BufferedReader(isReader)) {
                     String line;
                     while ((line = reader.readLine()) != null) {
@@ -676,12 +677,12 @@ public class XpmImageParser extends ImageParser {
         }
 
         String line = "/* XPM */\n";
-        os.write(line.getBytes("US-ASCII"));
+        os.write(line.getBytes(StandardCharsets.US_ASCII));
         line = "static char *" + randomName() + "[] = {\n";
-        os.write(line.getBytes("US-ASCII"));
+        os.write(line.getBytes(StandardCharsets.US_ASCII));
         line = "\"" + src.getWidth() + " " + src.getHeight() + " " + colors
                 + " " + charsPerPixel + "\",\n";
-        os.write(line.getBytes("US-ASCII"));
+        os.write(line.getBytes(StandardCharsets.US_ASCII));
 
         for (int i = 0; i < colors; i++) {
             String color;
@@ -692,15 +693,15 @@ public class XpmImageParser extends ImageParser {
             }
             line = "\"" + pixelsForIndex(i, charsPerPixel) + " c " + color
                     + "\",\n";
-            os.write(line.getBytes("US-ASCII"));
+            os.write(line.getBytes(StandardCharsets.US_ASCII));
         }
 
         String separator = "";
         for (int y = 0; y < src.getHeight(); y++) {
-            os.write(separator.getBytes("US-ASCII"));
+            os.write(separator.getBytes(StandardCharsets.US_ASCII));
             separator = ",\n";
             line = "\"";
-            os.write(line.getBytes("US-ASCII"));
+            os.write(line.getBytes(StandardCharsets.US_ASCII));
             for (int x = 0; x < src.getWidth(); x++) {
                 final int argb = src.getRGB(x, y);
                 if ((argb & 0xff000000) == 0) {
@@ -710,14 +711,14 @@ public class XpmImageParser extends ImageParser {
                             palette.getPaletteIndex(0xffffff & argb),
                             charsPerPixel);
                 }
-                os.write(line.getBytes("US-ASCII"));
+                os.write(line.getBytes(StandardCharsets.US_ASCII));
             }
             line = "\"";
-            os.write(line.getBytes("US-ASCII"));
+            os.write(line.getBytes(StandardCharsets.US_ASCII));
         }
 
         line = "\n};\n";
-        os.write(line.getBytes("US-ASCII"));
+        os.write(line.getBytes(StandardCharsets.US_ASCII));
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/icc/IccTag.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/icc/IccTag.java b/src/main/java/org/apache/commons/imaging/icc/IccTag.java
index 87d8dce..c22970d 100644
--- a/src/main/java/org/apache/commons/imaging/icc/IccTag.java
+++ b/src/main/java/org/apache/commons/imaging/icc/IccTag.java
@@ -23,6 +23,7 @@ import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.nio.ByteOrder;
 import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 
 import org.apache.commons.imaging.ImageReadException;
@@ -89,7 +90,7 @@ public class IccTag {
                         (byte) (0xff & (signature >> 24)),
                         (byte) (0xff & (signature >> 16)),
                         (byte) (0xff & (signature >> 8)),
-                        (byte) (0xff & (signature >> 0)), }, "US-ASCII")
+                        (byte) (0xff & (signature >> 0)), }, StandardCharsets.US_ASCII)
                 + ")");
 
         if (data == null) {
@@ -105,7 +106,7 @@ public class IccTag {
                             (byte) (0xff & (dataTypeSignature >> 24)),
                             (byte) (0xff & (dataTypeSignature >> 16)),
                             (byte) (0xff & (dataTypeSignature >> 8)),
-                            (byte) (0xff & (dataTypeSignature >> 0)), }, "US-ASCII")
+                            (byte) (0xff & (dataTypeSignature >> 0)), }, StandardCharsets.US_ASCII)
                     + ")");
 
             if (itdt == null) {

http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/7862d602/src/main/java/org/apache/commons/imaging/icc/IccTagDataTypes.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/imaging/icc/IccTagDataTypes.java b/src/main/java/org/apache/commons/imaging/icc/IccTagDataTypes.java
index 4c4d5d1..1c70c3a 100644
--- a/src/main/java/org/apache/commons/imaging/icc/IccTagDataTypes.java
+++ b/src/main/java/org/apache/commons/imaging/icc/IccTagDataTypes.java
@@ -22,6 +22,7 @@ import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.ByteOrder;
+import java.nio.charset.StandardCharsets;
 
 import org.apache.commons.imaging.ImageReadException;
 
@@ -40,7 +41,7 @@ public enum IccTagDataTypes implements IccTagDataType {
                 final int stringLength = read4Bytes("stringLength", bis, "ICC: corrupt tag data", ByteOrder.BIG_ENDIAN);
     
                 //            bis.readByteArray("ignore", bytes.length -12, "none");
-                final String s = new String(bytes, 12, stringLength - 1, "US-ASCII");
+                final String s = new String(bytes, 12, stringLength - 1, StandardCharsets.US_ASCII);
                 System.out.println(prefix + "s: '" + s + "'");
             }
         }
@@ -91,7 +92,7 @@ public enum IccTagDataTypes implements IccTagDataType {
                                 (byte) (0xff & (thesignature >> 24)),
                                 (byte) (0xff & (thesignature >> 16)),
                                 (byte) (0xff & (thesignature >> 8)),
-                                (byte) (0xff & (thesignature >> 0)), }, "US-ASCII")
+                                (byte) (0xff & (thesignature >> 0)), }, StandardCharsets.US_ASCII)
                         + ")");
             }
         }
@@ -107,7 +108,7 @@ public enum IccTagDataTypes implements IccTagDataType {
             try (InputStream bis = new ByteArrayInputStream(bytes)) {
                 read4Bytes("type_signature", bis, "ICC: corrupt tag data", ByteOrder.BIG_ENDIAN);
                 read4Bytes("ignore", bis, "ICC: corrupt tag data", ByteOrder.BIG_ENDIAN);
-                final String s = new String(bytes, 8, bytes.length - 8, "US-ASCII");
+                final String s = new String(bytes, 8, bytes.length - 8, StandardCharsets.US_ASCII);
                 System.out.println(prefix + "s: '" + s + "'");
             }
         }