|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
java.lang.Objectjava.nio.charset.Charset
public abstract class Charset
16 비트 Unicode 코드 단위의 순서와 바이트 순서간의 지정 맵입니다. 이 클래스에는, 디코더나 엔코더를 작성하는 메소드나, 캐릭터 세트에 관련지을 수 있던 다양한 이름을 취득하는 메소드를 정의합니다. 이 클래스의 인스턴스는 불변입니다.
또, 이 클래스에는, 어느 캐릭터 세트가 지원되고 있는지 어떤지의 체크, 이름에 의한 캐릭터 세트의 인스턴스의 검색, 및 현재의 Java 가상 머신으로 지원 떠날 수 있어 모든 캐릭터 세트를 기재한 맵의 구축을하기 위한 정적 메소드도 정의되고 있습니다. 새로운 캐릭터 세트를 추가하는 경우는,CharsetProvider
클래스에 정의되고 있는 서비스 프로바이더 인터페이스를 사용합니다.
이 클래스에서 정의 떠날 수 있어 모든 메소드는, 복수의 병행 thread로 안전하게 사용할 수 있습니다.
캐릭터 세트명은, 다음의 문자를 포함한 캐릭터 라인으로 나타내집니다.
모든 캐릭터 세트에는 「정규명」이 있습니다. 이 밖에, 몇개의 「별명」이 존재하는 경우도 있습니다. 이 클래스의 name
메소드는 정규명을 돌려줍니다. 일반적으로, 정규명은 알파벳의 대문자로 기술됩니다. aliases
메소드는, 캐릭터 세트의 별명을 돌려줍니다.
일부의 캐릭터 세트에는, 이전의 버젼의 Java 플랫폼과의 호환성을 고려한 「호환명」이 포함되어 있습니다. 호환명은, 그 캐릭터 세트의 정규명이나 별명이 됩니다. InputStreamReader
클래스와 OutputStreamWriter
클래스의 getEncoding() 메소드는, 호환명을 돌려줍니다.
IANA Charset Registry 에 기재되어 있는 캐릭터 세트를 Java 플랫폼의 구현이 지원하는 경우, 그 캐릭터 세트의 정규명은 레지스트리내의 이름이 됩니다. 캐릭터 세트의 상당수는 레지스트리내에 복수의 이름을 가지고 있습니다. 이 경우, 레지스트리는, 몇개의 이름을 「MIME 우선」이라고 합니다. 이와 같이, 캐릭터 세트가 복수의 레지스트리명을 가지고 있는 경우, MIME 우선명이 정규명이 되어, 그 외의 레지스트리명은 유효한 별명이 됩니다. 지원되고 있는 캐릭터 세트가 IANA 레지스트리에 기재되지 않은 경우, 정규명은 "X-" 또는 "x-" 로 시작되는 캐릭터 라인이 됩니다.
IANA 캐릭터 세트 레지스트리의 내용은, 시간의 경과와 함께 변화합니다. 이것에 수반해, 캐릭터 세트의 정규명이나 별명도 변화합니다. 호환성을 확보할 필요가 있는 경우는, 캐릭터 세트의 별명을 삭제하지 않는 것, 캐릭터 세트의 정규명이 바뀌었을 경우는 원의 정규명을 별명으로서 추가하는 것을 추천합니다.
Java 플랫폼의 구현은, 모두 다음의 표준 캐릭터 세트를 지원할 필요가 있습니다. 지원되고 있는 그 외의 캐릭터 세트에 대해서는, 구현의 릴리스 노트를 참조해 주세요. 그러한 옵션의 캐릭터 세트의 동작은 구현 마다 다를 가능성이 있습니다.
캐릭터 세트
설명
US-ASCII 7 비트 ASCII (ISO646-US/Unicode charset의 Basic Latin 블록) ISO-8859-1 ISO Latin Alphabet No. 1 (ISO-LATIN-1) UTF-8 8 비트 UCS Transformation Format UTF-16LE 16 비트 UCS 변환 형식, 빅 endian 바이트순서 UTF-16BE 16 비트 UCS 변환 형식, little endian 바이트순서 UTF-16 16 비트 UCS 변환 형식, 옵션의 바이트순서 마크로 식별되는 바이트순서
UTF-8 캐릭터 세트는,RFC 2279 에 의해 규정되고 있습니다. 또, 그 변환 형식은, ISO 10646-1 의 Amendment 2 내에서 규정되고 있어Unicode Standard 에서도 설명되고 있습니다.
UTF-16 캐릭터 세트는,RFC 2781 에 의해 규정되고 있습니다. 또, 그 변환 형식은, ISO 10646-1 의 Amendment 1 내에서 규정되고 있어Unicode Standard 에서도 설명되고 있습니다.
UTF-16 캐릭터 세트는 16 비트의 양을 사용하기 위해(때문에), 바이트순서의 영향을 받습니다. 이러한 인코딩에서는, 스트림의 바이트순서는, Unicode 문자 '\uFEFF' 의 「바이트순서 마크」로 지정됩니다. 바이트순서 마크의 취급은 다음과 같습니다.
디코드때,UTF-16BE 캐릭터 세트와 UTF-16LE 캐릭터 세트는 바이트순서 마크를 무시한다. encode때는 바이트순서 마크를 기입하지 않는다
디코드때,UTF-16 캐릭터 세트는 바이트순서 마크를 해석해 스트림의 바이트순서를 결정하지만, 바이트순서 마크가 없는 경우는 빅 endian 바이트순서를 사용한다. encode때는, 빅 endian 바이트순서를 사용해, 빅 endian 바이트순서 마크를 기입한다
Java 가상 머신의 각 인스턴스에는, 디폴트의 캐릭터 세트가 있습니다. 이 캐릭터 세트는, 표준 캐릭터 세트이다고는 할 수 없습니다. 디폴트의 캐릭터 세트는 가상 머신의 기동시로 결정됩니다만, 그것은 일반적으로 operating system가 사용하고 있는 로케일과 캐릭터 세트에 의해 정해집니다.
이 클래스의 이름은,RFC 2278 로 사용되고 있는 용어에 유래하고 있습니다. 이 문서내에서, 「캐릭터 세트」는 코드화 문자 집합과 문자 인코딩 방식의 편성으로서 정의되고 있습니다.
「코드화 문자 집합」은, 추상 문자의 집합과 정수의 집합간의 매핑을 나타냅니다. 코드화 문자 집합의 예로서는, US-ASCII, ISO 8859-1, JIS X 0201, 완전 Unicode (ISO 10646-1 와 같다)등을 들 수 있습니다.
「문자 인코딩 방식」은, 코드화 문자 집합과 8중창 (8 비트 바이트) 순서간의 매핑을 나타냅니다. 문자 인코딩 방식의 예로서는, UTF-8, UCS-2, UTF-16, ISO 2022, EUC 등을 들 수 있습니다. 인코딩 방식은 일반적으로, 특정의 코드화 문자 집합에 관련지을 수 있습니다. 예를 들어, UTF-8 는, Unicode 의 인코딩 전용입니다. 인코딩 방식안에는, 복수의 문자 집합에 관련지을 수 있는 것도 있습니다. 예를 들어, EUC 를 사용하면, 아시아 지역의 다양한 문자 집합의 문자를 encode 할 수 있습니다.
코드화 문자 집합과 문자 인코딩 방식이 1 대 1 에 대응하고 있는 경우, 일반적으로은 그 문자 집합의 이름에 연관된 캐릭터 세트명을 붙일 수 있습니다. 그 이외의 경우는 일반적으로, 인코딩 방식 (와 지원하는 문자 집합의 로케일)으로 연관된 이름을 붙일 수 있습니다. 따라서, US-ASCII 의 캐릭터 세트명은 US-ASCII, JIS X 0201, JIS X 0208, and JIS X 0212 의 각 문자 집합을 encode 하는 캐릭터 세트의 이름은,EUC-JP 가 됩니다.
Java 프로그램 언어의 네이티브의 문자 인코딩 방식은, UTF-16 입니다. 따라서, Java 플랫폼내의 각 캐릭터 세트는, 16 비트의 UTF-16 코드 단위의 순서와 바이트 순서와의 사이의 매핑을 정의합니다.
CharsetDecoder
,
CharsetEncoder
,
CharsetProvider
,
Character
생성자 의 개요 | |
---|---|
protected |
Charset (String canonicalName,
String [] aliases)
정규명과 별명세트를 사용해, 새로운 캐릭터 세트를 초기화합니다. |
메소드의 개요 | |
---|---|
Set <String > |
aliases ()
이 캐릭터 세트의 별명이 포함되는 세트를 돌려줍니다. |
static SortedMap <String ,Charset > |
availableCharsets ()
정규 캐릭터 세트명으로부터 Charset 객체에의 소트 된 맵을 구축합니다. |
boolean |
canEncode ()
이 캐릭터 세트가 인코딩을 지원할지 어떨지를 판단합니다. |
int |
compareTo (Charset that)
이 캐릭터 세트와 다른 캐릭터 세트를 비교합니다. |
abstract boolean |
contains (Charset cs)
이 캐릭터 세트로 지정의 캐릭터 세트가 포함되어 있는지 어떤지를 판단합니다. |
CharBuffer |
decode (ByteBuffer bb)
이 캐릭터 세트로 표현된 바이트를 Unicode 문자에 디코드하는 편리한 메소드입니다. |
static Charset |
defaultCharset ()
이 Java 가상 머신의 디폴트의 캐릭터 세트를 돌려줍니다. |
String |
displayName ()
디폴트 로케일에 있어서의, 이 캐릭터 세트의 이름 (인간이 읽을 수 있는 형식)을 돌려줍니다. |
String |
displayName (Locale locale)
지정 로케일에 있어서의 이 캐릭터 세트의 이름 (인간이 읽을 수 있는 형식)을 돌려줍니다. |
ByteBuffer |
encode (CharBuffer cb)
Unicode 문자를 이 캐릭터 세트로 표현된 바이트에 encode 하는 편리한 메소드입니다. |
ByteBuffer |
encode (String str)
캐릭터 라인을 이 캐릭터 세트로 표현된 바이트에 encode 하는 편리한 메소드입니다. |
boolean |
equals (Object ob)
이 객체가 다른 객체와 등가일지 어떨지를 판단합니다. |
static Charset |
forName (String charsetName)
지정된 캐릭터 세트의 Charset 객체를 돌려줍니다. |
int |
hashCode ()
이 캐릭터 세트의 해시 코드를 계산합니다. |
boolean |
isRegistered ()
이 캐릭터 세트가 IANA Charset Registry 에 등록되어 있는지 어떤지를 판별합니다. |
static boolean |
isSupported (String charsetName)
지정된 캐릭터 세트가 지원되고 있는지 어떤지를 판단합니다. |
String |
name ()
이 캐릭터 세트의 정규명을 돌려줍니다. |
abstract CharsetDecoder |
newDecoder ()
이 캐릭터 세트의 새로운 디코더를 구축합니다. |
abstract CharsetEncoder |
newEncoder ()
이 캐릭터 세트의 새로운 엔코더를 구축합니다. |
String |
toString ()
이 캐릭터 세트를 설명하는 캐릭터 라인을 돌려줍니다. |
클래스 java.lang. Object 로부터 상속된 메소드 |
---|
clone , finalize , getClass , notify , notifyAll , wait , wait , wait |
생성자 의 상세 |
---|
protected Charset(String canonicalName, String [] aliases)
canonicalName
- 이 캐릭터 세트의 정규명aliases
- 이 캐릭터 세트의 별명으로부터 완성되는 배열 (별명이 없는 경우는 null)
IllegalCharsetNameException
- 정규명 또는 별명이 부정한 경우메소드의 상세 |
---|
public static boolean isSupported(String charsetName)
charsetName
- 요구된 캐릭터 세트의 이름. 정규명이나 별명
IllegalCharsetNameException
- 지정된 캐릭터 세트가 부정한 경우
IllegalArgumentException
- 지정된 charsetName 가 null 인 경우public static Charset forName(String charsetName)
charsetName
- 요구된 캐릭터 세트의 이름. 정규명이나 별명
IllegalCharsetNameException
- 지정된 캐릭터 세트가 부정한 경우
IllegalArgumentException
- 지정된 charsetName 가 null 인 경우
UnsupportedCharsetException
- 지정 캐릭터 세트가 현재의 Java 가상 머신의 인스턴스에서는 이용할 수 없는 경우public static SortedMap <String ,Charset > availableCharsets()
이 메소드로부터 반환되는 맵에는, 현재의 Java 가상 머신으로 지원되고 있는 각 캐릭터 세트 마다 엔트리가 1 개씩 포함됩니다. 지원되고 있는 캐릭터 세트 속에 같은 정규명을 가지는 것이 복수 존재했을 경우, 결과적으로 얻을 수 있는 맵에는 그 중의 1 개(살)만이 포함됩니다. 다만, 어느 쪽의 캐릭터 세트가 포함될까는 미정입니다.
이 메소드의 호출이나, 그 결과적으로 얻을 수 있던 맵을 이용하려면 , 시간이 걸리는 디스크 입출력 조작이나 네트워크 입출력 조작이 발생할 가능성이 있습니다. 이 메소드는, 사용자에게 캐릭터 세트를 선택시키는 경우 등, 사용 가능한 모든 캐릭터 세트를 열거할 필요가 있는 어플리케이션용으로서 제공되고 있습니다. forName
메소드에서는, 이 메소드를 사용하지 않고 , 효율의 좋은 증분 검색 알고리즘을 채용하고 있습니다.
새로운 캐릭터 세트 프로바이더가 현재의 Java 가상 머신에 대해서 동적으로 이용 가능하게 되는 경우, 이 메소드는 매회 다른 결과를 돌려줄 가능성이 있습니다. 그러한 변경이 발생하지 않는 경우는, 이 메소드로부터 반환되는 캐릭터 세트는,forName
메소드로부터 취득 가능한 캐릭터 세트와 완전히 같게 됩니다.
public static Charset defaultCharset()
디폴트의 캐릭터 세트는 가상 머신의 기동시로 결정됩니다만, 그것은 일반적으로, operating system의 로케일과 캐릭터 세트에 의해 정해집니다.
public final String name()
public final Set <String > aliases()
public String displayName()
이 메소드의 디폴트 구현은, 이 캐릭터 세트의 정규명만을 돌려줍니다. 이 클래스의 구상 서브 클래스에서 이 메소드를 오버라이드(override) 하면, 로컬라이즈 된 표시명을 제공할 수 있습니다.
public final boolean isRegistered()
public String displayName(Locale locale)
이 메소드의 디폴트 구현은, 이 캐릭터 세트의 정규명만을 돌려줍니다. 이 클래스의 구상 서브 클래스에서 이 메소드를 오버라이드(override) 하면, 로컬라이즈 된 표시명을 제공할 수 있습니다.
locale
- 표시명을 취득하는 로케일
public abstract boolean contains(Charset cs)
캐릭터 세트 D 로 표현할 수 있는 모든 문자를 캐릭터 세트 C 에서도 표현할 수 있는 경우에 한정해, 캐릭터 세트 C 는 캐릭터 세트 D 를 「포함한다」라고 말할 수가 있습니다. 이 관계가 성립하고 있는 경우, 캐릭터 세트 D 에 encode 할 수 있는 모든 캐릭터 라인은, 문자의 치환을 일절 실시하는 일 없이, 캐릭터 세트 C 에도 encode 할 수 있습니다.
캐릭터 세트 C 가 캐릭터 세트 D 를 「포함한다」라고 말해도, 쌍방의 캐릭터 세트가, 개개의 문자를 표현하기 위해서 전혀 같은 바이트 순서를 사용하고 있다고는 할 수 없습니다.
모든 캐릭터 세트는, 자신을 포함 하고 있습니다.
이 메소드는, 포함 관계의 근사치를 계산합니다. 이 메소드의 반환값이 true 이면, 지정된 캐릭터 세트는 확실히 현재의 캐릭터 세트에 포함되어 있습니다. 다만, 반환값이 false 의 경우에서도, 지정된 캐릭터 세트가 현재의 캐릭터 세트에 포함되어 있는 일이 있습니다.
public abstract CharsetDecoder newDecoder()
public abstract CharsetEncoder newEncoder()
UnsupportedOperationException
- 이 캐릭터 세트가 인코딩을 지원하지 않는 경우public boolean canEncode()
캐릭터 세트의 대부분은 encode를 지원하고 있습니다만, 예외도 있습니다. 예를 들어, 특수 목적의 「자동 검출」캐릭터 세트 등입니다. 이 캐릭터 세트의 디코더는, 입력 바이트 순서를 조사하는 것으로, 복수의 인코딩 방식 가운데 어떤 것이 사용되고 있을까를 결정할 수 있습니다. 이러한 캐릭터 세트는 encode를 지원하지 않습니다. 출력시에 사용해야 할 인코딩 방식을 특정할 수 없기 때문입니다. 이러한 캐릭터 세트의 구현에서는, 이 메소드를,false 가 돌려주어지도록(듯이) 오버라이드(override) 할 필요가 있습니다.
public final CharBuffer decode(ByteBuffer bb)
이 메소드를 캐릭터 세트 cs 에 대해서 호출하면(자), 다음의 식과 같은 결과를 얻을 수 있습니다.
cs.newDecoder() . onMalformedInput(CodingErrorAction.REPLACE) . onUnmappableCharacter(CodingErrorAction.REPLACE) . decode(bb);다만, 다음의 호출까지의 사이에 디코더를 캐쉬할 수 있다고 하는 점으로써, 이 메소드 쪽이 효율적입니다.
이 메소드는, 부정 입력 순서나 맵 불가 문자 순서를, 이 캐릭터 세트의 디폴트의 치환 바이트 배열로 옮겨놓습니다. 그러한 순서를 검출하는 경우는,CharsetDecoder.decode(java.nio.ByteBuffer)
메소드를 직접 사용해 주세요.
bb
- 디코드되는 byte 버퍼
public final ByteBuffer encode(CharBuffer cb)
이 메소드를 캐릭터 세트 cs 에 대해서 호출하면(자), 다음의 식과 같은 결과를 얻을 수 있습니다.
cs.newEncoder() . onMalformedInput(CodingErrorAction.REPLACE) . onUnmappableCharacter(CodingErrorAction.REPLACE) . encode(bb);다만, 다음의 호출까지의 사이에 엔코더를 캐쉬할 수 있다고 하는 점으로써, 이 메소드 쪽이 효율적입니다.
이 메소드는, 부정 입력 순서나 맵 불가 문자 순서를, 이 캐릭터 세트의 디폴트의 치환 캐릭터 라인으로 옮겨놓습니다. 그러한 순서를 검출하는 경우는,CharsetEncoder.encode(java.nio.CharBuffer)
메소드를 직접 사용해 주세요.
cb
- encode 되는 문자 버퍼
public final ByteBuffer encode(String str)
이 메소드를 캐릭터 세트 cs 에 대해서 호출하면(자), 다음의 식과 같은 결과를 얻을 수 있습니다.
cs.encode(CharBuffer.wrap(s));
str
- encode 되는 캐릭터 라인
public final int compareTo(Charset that)
캐릭터 세트는 정규명 순서에 늘어놓을 수 있습니다 (알파벳의 대문자와 소문자는 구별되지 않는다).
Comparable <Charset >
내의 compareTo
that
- 이 캐릭터 세트와 비교하는 캐릭터 세트
public final int hashCode()
Object
내의 hashCode
Object.equals(java.lang.Object)
,
Hashtable
public final boolean equals(Object ob)
2 개의 캐릭터 세트는, 같은 정규명을 가지고 있는 경우에 한정해 등가입니다. 캐릭터 세트가 다른 형태의 객체와 등가가 될 것은 없습니다.
Object
내의 equals
ob
- 비교 대상의 참조 객체
Object.hashCode()
,
Hashtable
public final String toString()
Object
내의 toString
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.