양방향 데이터 지원
런타임 환경에는 텍스트를 오른쪽에서 왼쪽으로 기록하고 왼쪽에서 오른쪽으로도 기록하는 양방향 데이터에 대한 지원이 포함되어 있습니다.
Java™ 런타임 환경에서 문자 데이터는 유니코드 UTF-16 값으로 조작됩니다. 그러나 Java 런타임 환경 외부의 문자 데이터는 종종 다른 인코딩을 준수합니다. 이러한 이유로 인해 바이트를 문자로 변환하고 다시 문자를 바이트로 변환하는 조작과 함께 파일 입출력(I/O)을 수행하는 경우에도 외부 인코딩을 UTF-16으로 변환하고 다시 그 반대로 변환해야 합니다. 예를 들어 InputStreamReader 또는 OutputStreamWriter 오브젝트의 생성자에 외부 인코딩을 지정하거나 기본 인코딩을 사용할 수 있습니다.
유니코드 표준의 구현을 통해 Java 런타임 환경은 다양한 알파벳 또는 스크립트가 있는 여러 언어를 지원합니다.이러한 언어에는 오른쪽에서 왼쪽으로 스크립트가 작성되는 아랍어 및 히브리어가 포함됩니다. 아랍어 및 히브리어 텍스트는 종종 왼쪽에서 오른쪽으로 작성되는 다른 언어 (및 숫자) 와 혼합되므로 Java 런타임 환경은 양방향 데이터를 처리할 수 있어야 합니다.
양방향 데이터는 다양한 인코딩은 물론 다양한 레이아웃으로도 저장할 수 있기 때문에 양방향이 아닌 데이터보다 더욱 가변적입니다. 각각의 레이아웃은 문자의 순서 지정(아랍어 및 히브리어) 및 아랍어 문자의 쉐이핑(가능한 여러 쉐이프 중에서 아랍어 문자에 대해 적절한 쉐이프를 선택함)에 대한 규칙의 조합입니다.
Java 런타임 환경이 데이터를 외부 인코딩에서 내부 인코딩으로 변환하고 그 반대로 변환하는 것과 동일한 이유로, 양방향 데이터를 외부 레이아웃에서 Java 런타임 환경 내에서 사용되는 레이아웃으로 변환해야 합니다. 예를 들어, 이전 애플리케이션은 비주얼 레이아웃에 데이터를 저장하는 반면 Java API는 암시적 레이아웃 ( 논리적 레이아웃이라고도 함) 을 가정합니다.
Java 런타임 환경에서 인코딩 변환이 실행될 때마다 양방향 데이터에 대해 레이아웃 변환이 실행되도록 요청할 수 있습니다. 이러한 변환은 기본적으로 사용 안함으로 설정되어 있습니다. 변환을 사용하려면 Java 애플리케이션을 시작할 때 JAVABIDI 시스템 특성을 설정하십시오. 자세한 정보는 -DJAVABIDI를 참조하십시오.
Java 코드에서 직접 양방향 레이아웃 엔진 API를 사용할 수도 있습니다. 자세한 정보는 API 참조 문서에서 양방향 지원 을 참조하십시오.