2010-05-28 1 views

답변

5

Windows는 Linux가 유니 코드 지원이라는 개념을 갖기 전에 UTF-16 및 교환 원 Ascii/Unicode 기능 방식 방식으로 WAAAAAAY를 90 년대 초반 (Windows NT 3.1이 1993 년에 나옴)으로 지원하기로 결정했습니다.

Linux는 Windows 및 기타 유니 코드 가능 플랫폼을 기반으로 구축 된 모범 사례에서 배울 수있었습니다.

UTF-16이 더 많은 공간을 효율적으로 사용하는 경우 많은 수의 2 바이트 문자를 처리해야한다는 것을 알지 못한다면 많은 사람들이 크기면에서 더 나은 인코딩이라는 것에 동의 할 것입니다.

+1

Java가 UTF-16을 사용하는 이유는 무엇입니까? 그것은 훨씬 늦은 작업입니다. –

+0

Windows와의 통합을 향상시킬 수 있습니다. 전형적인 "좋은"(적어도, 아주 유효한 것)은 많은 나쁜 설계 결정에 대한 이유입니다. – ypnos

+0

필자는 Windows 호환성이 그다지 중요하지 않다고 생각합니다. (파이썬은 또한 윈도우에서 실행될 때 유니 코드 문자열을 위해 UTF-16을 사용합니다.) 그러나 자바에서 유니 코드를 사용하는 나쁜 디자인의 간단한 요소가 있습니다. 자바가 시스템의 '기본 인코딩' 결코 옳은 일이 아닙니다. 자바는 당신이 다루기 힘든 이식성이없는 charset 코드를 작성하도록 장려한다. – bobince

11

UTF-16은 거의 손실로, 두 세계 모두 최악입니다. 이것은 컴팩트하지도 않으며 (ASCII 문자의 전형적인 경우), 각 코드 단위를 문자로 매핑하지도 않습니다. Basic Multilingual Plane의 외부 문자는 거의 사용되지 않았기 때문에 이것은 아직 심하게 괴롭지는 못했지만 확실히 추악합니다.

POSIX (Linux et al)에는 wchar_t 유형을 기반으로하는 일부 w API가 있습니다. Windows 이외의 플랫폼에서는 일반적으로 UTF-16이 아닌 UTF-32에 해당합니다. 쉬운 문자열 조작에 좋지만 믿을 수 없을 정도로 부풀어 오른다.

하지만 메모리 내 API는 그다지 중요하지 않습니다. 훨씬 더 많은 어려움을 야기하는 것은 파일 저장과 다양한 charset 전통을 가진 응용 프로그램간에 데이터가 교환되는 on-the-wire 프로토콜입니다.

여기서 압축률은 쉽게 색인 할 수 있습니다. UTF-8이 지금까지 가장 좋은 형식으로 명확하게 입증되었으며 Windows의 UTF-8 지원이 어려움으로 인해 어려움을 겪고 있습니다. Windows는 아직 로케일 고유의 기본 인코딩을 유지하는 마지막 최신 운영 체제입니다. 다른 모든 사람들은 기본적으로 UTF-8로 이동했습니다.

전적으로 Microsoft가 Windows 전용 영역에서도 거대하고 불필요한 문제를 일으킬 수 있으므로 Microsoft에서 향후 버전을 고려해 보길 진심으로 희망합니다.

WinNT가 설계 될 당시의 생각은 UCS-2가 유니 코드의 경우 이었습니다. 16 비트 문자 범위를 벗어나는 것도 없었습니다. 모든 사람들이 UCS-2 메모리를 사용하고 자연스럽게이 내용을 메모리에서 직접 저장하는 것이 가장 쉽습니다. 이것이 Windows가 "유니 코드"형식이라고 부르는 이유이며, 여전히 오해의 소지가 있음에도 불구하고 저장 상자와 같은 UI에서 UTF-16LE을 "유니 코드"라고 부릅니다.

UTF-8은 유니 코드 2.0까지 표준화되지 않았습니다 (확장 문자 범위 및 UTF-16을 현재 제작 한 대리모와 함께). 그때까지 마이크로 소프트는 WinNT4에 갔었는데, 그 시점에서 전략을 변경하기에는 너무 늦었습니다. 간단히 말해서, 마이크로 소프트는 유니 코드가 초기 단계에 새로운 OS를 처음부터 디자인하는 것은 불행했습니다.

+0

잘 일본과 중국은 꽤 자주 BMP 밖에 물건을 사용합니다 ... – Spudd86

+1

나는 자주 말하지 않을 것입니다. BMP에는 그 당시 표준 국가 별 문자 세트 (Shift-JIS, Big5, GB 등)에 있던 표의 문자가 포함되어 있으므로 SMP의 추가 문자는 Unicode 3.1 이전에 CJK 사용자가 전혀 사용할 수 없었던 기호입니다 . 이들은 주로 학문적 관심사의 역사적 특성이며 IME는 직접 입력 할 수 없으며 글꼴 지원은 여전히 ​​약합니다. – bobince

관련 문제