Java에서 “UTF-8″문자열 리터럴을 어디서 구할 수 있습니까? 코드에서 문자열 리터럴 대신 상수를

이 코드에서 문자열 리터럴 대신 상수를 사용하려고합니다.

new InputStreamReader(new FileInputStream(file), "UTF-8")

"UTF-8"코드에 다소 자주 나타나고 static final대신 일부 변수 를 참조하는 것이 좋습니다. JDK에서 이러한 변수를 어디에서 찾을 수 있는지 알고 있습니까?

BTW, 두 번째 생각으로, 그러한 상수는 나쁜 디자인입니다 : Public Static Literals … 데이터 복제 솔루션이 아닙니다



답변

Java 1.7 이상에서 java.nio.charset.StandardCharsetsCharset포함 할 상수를 정의합니다 UTF_8.

import java.nio.charset.StandardCharsets;

...

StandardCharsets.UTF_8.name();

안드로이드 : minSdk 19


답변

이제 commons-lang의org.apache.commons.lang3.CharEncoding.UTF_8 상수를 사용 합니다.


답변

구글 구아바 (자바에서 일을하는 경우 내가보기 엔, 어쨌든 권하고 싶습니다) 라이브러리는이 Charsets같은 정적 필드 클래스 Charsets.UTF_8, Charsets.UTF_16

Java 7부터는 java.nio.charset.StandardCharsets비슷한 상수에 대신 사용해야 합니다.

이 상수는 문자열이 아니며 실제 Charset인스턴스입니다. 문자 세트 이름을 사용하는 모든 표준 API에는 Charset대신 사용해야 하는 객체를 사용 하는 오버로드가 있습니다 .


답변

이 페이지가 누군가의 웹 검색에 나타나는 경우 Java 1.7 부터 java.nio.charset.StandardCharsets 를 사용 하여 표준 문자 세트의 상수 정의에 액세스 할 수 있습니다.


답변

이 상수는 (같은 다른 사람의 사이에서 볼 수 UTF-16, US-ASCII학급 등) org.apache.commons.codec.CharEncoding뿐만 아니라.


답변

최소한 표준 Java 라이브러리에는 없습니다. 문자 집합은 플랫폼마다 다르므로 Java에는 표준 목록이 없습니다.

그러나 이러한 상수를 포함하는 일부 타사 라이브러리가 있습니다. 다음 중 하나는 구아바 (Google 핵심 라이브러리)입니다. http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/base/Charsets.html


답변

Charset.defaultCharset()API 또는 file.encoding속성을 사용할 수 있습니다 .

그러나 자신의 상수를 원한다면 직접 정의해야합니다.