== Why is this an issue?

JDK7 introduced the class ``++java.nio.charset.StandardCharsets++``. It provides constants for all charsets that are guaranteed to be available on every implementation of the Java platform.


* ISO_8859_1
* US_ASCII
* UTF_16
* UTF_16BE
* UTF_16LE
* UTF_8

These constants should be preferred to:

* the use of a String such as "UTF-8" which has the drawback of requiring the ``++catch++``/``++throw++`` of an ``++UnsupportedEncodingException++`` that will never actually happen
* the use of Guava’s ``++Charsets++`` class, which has been obsolete since JDK7


=== Noncompliant code example

[source,java]
----
try {
  byte[] bytes = string.getBytes("UTF-8"); // Noncompliant; use a String instead of StandardCharsets.UTF_8
} catch (UnsupportedEncodingException e) {
  throw new AssertionError(e);
}
// ...
byte[] bytes = string.getBytes(Charsets.UTF_8); // Noncompliant; Guava way obsolete since JDK7
----


=== Compliant solution

[source,java]
----
byte[] bytes = string.getBytes(StandardCharsets.UTF_8)
----



ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

=== Message

Replace XXX with StandardCharsets.XXX


'''
== Comments And Links
(visible only on this page)

=== on 10 Jul 2018, 21:46:38 Ann Campbell wrote:
\[~alexandre.gigleux] I suggest you drop the phrase "unless the JVM violates the JDK specifications"

=== on 11 Jul 2018, 08:20:29 Alexandre Gigleux wrote:
\[~ann.campbell.2]: Done

endif::env-github,rspecator-view[]
