
Inline adoc files when they are included exactly once. Also fix language tags because this inlining gives us better information on what language the code is written in.
64 lines
1.5 KiB
Plaintext
64 lines
1.5 KiB
Plaintext
== 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[]
|