Unicode의 국제 컴포넌트
International Components for Unicode개발자 | 유니코드 컨소시엄 |
---|---|
초기 릴리즈 | 1999 |
안정된 릴리스 | 71.1 / 2022년 4월 ; 전( |
저장소 | |
기입처 | C/C++(C++20) 및 Java |
운영 체제 | 크로스 플랫폼 |
유형 | 유니코드 및 국제화를 위한 라이브러리 |
면허증. | Unicode 라이선스 |
웹 사이트 | icu |
International Components for Unicode(ICU)는 Unicode 지원, 소프트웨어 국제화 및 소프트웨어 세계화를 위한 성숙한 C/C++ 및 Java 라이브러리의 오픈 소스 프로젝트입니다.ICU는 많은 운영 체제 및 환경에서 광범위하게 휴대할 수 있습니다.모든 플랫폼 및 C, C++ 및 Java 소프트웨어 간에 동일한 결과를 응용 프로그램에 제공합니다.ICU 프로젝트는 Unicode Consortium의 기술 위원회로 IBM과 다른 [1]많은 기업에서 후원, 지원 및 사용합니다.
ICU는 다음 서비스를 제공합니다.Unicode 텍스트 처리, 전체 문자 속성 및 문자 집합 변환, Unicode 정규 표현, 전체 Unicode 세트, 문자, 단어 및 행 경계, 언어에 민감한 대조 및 검색, 정규화, 대소문자 변환 및 스크립트 변환, 포괄적인 로케일 데이터와 리소스 번들 아키텍처Common Locale Data Repository(CLDR; 공통 로케일 데이터 저장소), 여러 캘린더 및 시간대, 날짜, 시간, 숫자, 통화 및 메시지의 규칙 기반 형식 지정 및 구문 분석.ICU는 역사적으로 아랍어, 히브리어, 인도어, 태국어를 위한 복잡한 텍스트 레이아웃 서비스를 제공했지만 버전 54에서는 폐지되었고 버전 58에서는 HarfBuzz를 [2]위해 완전히 제거되었다.
ICU는 C 및 C++의 표준 라이브러리보다 더 광범위한 국제화 기능을 제공합니다.Unicode 14.0이 지원됩니다.ICU 67은 Unicode 13.0을 지원하며 EU로부터의 영국 삭제를 처리합니다.ICU 64는 Unicode 12.0을 지원하며 ICU 64.2는 Unicode 12.1, 즉 현재 일본 레이와 시대의 단일 새로운 기호(단, ICU 버전 4CU까지 지원됨)를 추가했습니다.ICU 58(Unicode 9.0 지원)은 Windows XP 및 Windows Vista 등의 오래된 플랫폼을 지원하는 마지막 버전입니다.AIX, Solaris 및 z/OS에 대한 지원도 이후 버전에서 제한될 수 있습니다(즉, 구축은 [3]컴파일러 지원에 따라 다름).ICU는 Windows 10 버전 [4]1703부터 Microsoft Windows의 표준 컴포넌트로 포함되어 있습니다.
ICU는 지금까지 UTF-16을 사용해 왔지만, 여전히 Java에서만 사용되고 있습니다.단, C/C++ UTF-8의 [5][6]경우, 「불법 [7]UTF-8」의 올바른 처리를 포함한 서포트되고 있습니다.
ICO 70은 유니코드 14로 업데이트되었으며 문자열 및 C++20 컴파일러의 이모티콘 속성 지원을 추가했습니다.
ICU 71은 예를 들어 일본어(제목이나 표제 등 짧은 일본어 텍스트에는 구절 기반의 줄 바꿈)와 라틴어(Hi_Latn)를 지원하고 시간대 데이터 버전 2022a로 업데이트한다.
기원 및 개발
1996년 초 Taligent가 IBM의 일부가 된 후 Sun Microsystems는 새로운 Java 언어가 국제화를 더 잘 지원해야 한다고 결정했습니다.Taligent는 이러한 기술에 대한 경험이 있고 지리적으로 가까웠기 때문에 Text 및 International 그룹은 JDK 1.1 국제화 [8]API의 일환으로 Java Development Kit에 대한 국제 클래스를 제공하도록 요청받았습니다.이 코드의 대부분은 아직 에 존재합니다.java.text
그리고.java.util
패키지.이후 Java 릴리즈마다 국제화 기능이 추가되었습니다.
Java 국제화 클래스는 ICU4C로 알려진 라이브러리의 일부로서 C++ 및 C로[9] 이식되었습니다.ICU 프로젝트에서는 ICU4J(자바의 경우 ICU)도 제공되고 있습니다.이것에 의해, 표준 Java 라이브러리에는 없는 기능이 추가됩니다.ICU4C와 ICU4J는 동일하지는 않지만 매우 유사합니다.예를 들어 ICU4C에는 정규 표현 API가 포함되어 있지만 ICU4J에는 포함되어 있지 않습니다.두 프레임워크 모두 Unicode 및 Common Locale Data Repository(CLDR)의 새로운 기능과 기능을 지원하기 위해 시간이 지남에 따라 확장되었습니다.
ICU는 1999년에 IBM Classes for Unicode라는 이름으로 오픈 소스 프로젝트로 출시되었습니다.나중에 International Components For [10]Unicode로 이름이 변경되었습니다.2016년 5월 ICU 프로젝트는 Unicode 컨소시엄에 기술위원회 ICU-TC로 가입하였으며, 현재 라이브러리 소스는 [11]Unicode 라이선스로 배포되고 있습니다.
메시지 형식
ICU의 일부는 MessageFormat 클래스입니다.MessageFormat 클래스는 임의의 수의 인수를 사용하여 복수 형식을 제어할 수 있는 포맷 시스템입니다.plural
,selectordinal
스위치 케이스 스타일의 일반적인 선택(select
문법적인 성별과 같은 문법의 성별입니다.이러한 문장은 [12]네스트할 수 있습니다.ICU MessageFormat은 Java SE에서 동일한 이름의 시스템에 여러 선택 시스템을 추가하여 작성되었습니다.
대체 수단
ICU를 C++와 함께 사용하거나 직접 사용하는 다른 방법으로는 Boost를 사용하는 방법이 있습니다.로케일: ICU의 C++ 래퍼(다른[13] 백엔드도 허용).ICU가 아닌 직접 사용하는 것은 "C++ 개발자들에게는 전혀 비우호적이다.일반적인 C++ 관용어(STL, RTI, 예외 등)를 무시하고 Java [14][15]API를 모방합니다." ICU가 UTF-16만을 지원한다는 또 다른 주장(따라서 ICU 사용을 피해야 하는 이유)은 현재 CCU 및 C++[5]용 UTF-8을 지원하는 ICU에서는 더 이상 사실이 아닙니다.
「 」를 참조해 주세요.
레퍼런스
- ^ "ICU - International Components for Unicode". site.icu-project.org.
- ^ "Layout Engine - ICU User Guide". userguide.icu-project.org.
- ^ "Download ICU 64 - ICU - International Components for Unicode". site.icu-project.org. Retrieved 2019-10-20.
- ^ Chen, Raymond (27 May 2021). "How can I convert between IANA time zones and Windows registry-based time zones?". The Old New Thing. Microsoft.
- ^ a b "UTF-8". ICU Documentation. Retrieved 2022-05-24.
- ^ "UTF-8 - ICU User Guide". userguide.icu-project.org. Retrieved 2018-04-03.
- ^ "#13311 (change illegal-UTF-8 handling to Unicode "best practice")". bugs.icu-project.org. Retrieved 2018-04-03.
- ^ Laura Werner (1999). "Getting Java ready for the world: A brief history of IBM and Sun's internationalization efforts".
- ^ "ICU User Guide". userguide.icu-project.org.
- ^ "ICU Project Management Committee".
- ^ "ICU joins the Unicode Consortium". Unicode, Inc. 2016-05-16. Retrieved 2016-08-01.
- ^ "Formatting Messages". ICU User Guide.
- ^ "Boost.Locale: Using Localization Backends". www.boost.org. Retrieved 2022-05-24.
- ^ "Boost.Locale: Design Rationale". www.boost.org. Retrieved 2022-05-24.
- ^ "ICU vs Boost Locale in C++". Stack Overflow. Retrieved 2022-05-24.