JDK7
부터 java.nio.charset.StandardCharsets
클래스를 도입했습니다.
이 클래스에는 Java 플랫폼의 모든 구현에서 사용 가능할 수 있도록 보장된 모든 문자 집합에 대한 상수를 제공합니다.
- ISO_8859_1
- US_ASCII
- UTF_16
- UTF_16BE
- UTF_16LE
- UTF_8
이러한 상수는 다음과 같은 경우보다 우선되어 사용되어야 합니다
- “UTF-8”과 같은 문자열 대신 사용되어야 합니다. 이러한 문자열을 사용하면 실제로는 절대 일어나지 않을
UnsupportedEncodingException
을 위해 catch/throw를 고려해야한다는 단점이 있습니다 -
Guava
의Charsets
클래스 대신 사용되어야 합니다. 이 클래스는JDK7
이후 더 이상 사용되지 않습니다
규칙을 어긴 코드
try {
byte[] bytes = string.getBytes("UTF-8"); // 규칙을 어긴 코드; StandardCharsets.UTF_8 대신 문자열을 사용하고 있습니다
} catch (UnsupportedEncodingException e) {
throw new AssertionError(e);
}
// ...
byte[] bytes = string.getBytes(Charsets.UTF_8); // 규칙을 어긴 코드; Guava 방식은 JDK7 이후 더 이상 사용되지 않습니다
규칙을 준수한 해결책
byte[] bytes = string.getBytes(StandardCharsets.UTF_8)
If you like SONARKUBE, don’t forget to give me a star.