Linux가 UTF-8의 역 호환성을 선택한 반면 Windows는 완전히 새로운 API 기능을 UTF-16 ("W"로 끝남)에 추가 한 것을 알고 있습니다. 이러한 결정이 다를 수 있습니까? 어느 것이 더 나은 것으로 입증 되었습니까?Windows 및 Linux 시스템 제작자가 유니 코드를 지원하는 다양한 방법을 선택한 이유는 무엇입니까?
답변
Windows는 Linux가 유니 코드 지원이라는 개념을 갖기 전에 UTF-16 및 교환 원 Ascii/Unicode 기능 방식 방식으로 WAAAAAAY를 90 년대 초반 (Windows NT 3.1이 1993 년에 나옴)으로 지원하기로 결정했습니다.
Linux는 Windows 및 기타 유니 코드 가능 플랫폼을 기반으로 구축 된 모범 사례에서 배울 수있었습니다.
UTF-16이 더 많은 공간을 효율적으로 사용하는 경우 많은 수의 2 바이트 문자를 처리해야한다는 것을 알지 못한다면 많은 사람들이 크기면에서 더 나은 인코딩이라는 것에 동의 할 것입니다.
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를 처음부터 디자인하는 것은 불행했습니다.
- 1. 공식적으로 유니 코드를 지원하는 MS Office의 첫 번째 버전은 무엇입니까?
- 2. xampp에서 sqlite 확장을 사용하여 유니 코드를 지원하는 방법은 무엇입니까?
- 3. 유니 코드를 지원하는 PHP PDF 라이브러리가 있습니까?
- 4. 파이썬에서 유니 코드를 문자열로 선언하는 이유는 무엇입니까?
- 5. 다양한 Linux 배포판이 다른 패키지 관리자를 사용하는 이유는 무엇입니까?
- 6. 다양한 오브젝트에서 터치 이동을 지원하는 방법은 무엇입니까?
- 7. Windows, Linux 및 메모리 관리
- 8. Windows 및 Linux 컴퓨터에서 동시에 개발
- 9. Windows 및 Linux 용 소켓
- 10. UnicodeEncodeError : 유니 코드를 사용하고자하는 아스키
- 11. 유니 코드를 출력하는 방법은 무엇입니까?
- 12. 배열이 IList를 지원하는 이유는 무엇입니까?
- 13. libc에서 커널 코드를 호출하는 방법은 무엇입니까? (windows 또는 linux)
- 14. Windows 및 Linux 용 캄보디아 키보드?
- 15. 유니 코드를 사용하는 WYSIWIG
- 16. 다중 디스플레이를 지원하는 가상 시스템
- 17. RAM 메모리 재 할당 - Windows 및 Linux
- 18. FAT, Linux 및 NTFS 파일 시스템
- 19. Windows 및 Linux에서 32/64 비트 대상을 지원하는 플랫폼 간 호환 시스템
- 20. .NET에서 다양한 크기의 Windows 시스템 아이콘을 가져 오는 방법이 있습니까?
- 21. 다양한 시스템 ini 설정으로 테스트하십시오.
- 22. Windows 서비스 생성을 지원하는 개발 도구는 무엇입니까?
- 23. 트리거 방법을 들어야하는 이유는 무엇입니까?
- 24. Windows 및 Linux 모두에서 C++ 빌드
- 25. 트리거를 지원하는 소스 제어 시스템
- 26. Python에서 유니 코드를 사용하는 방법
- 27. Lucene은 유니 코드를 지원합니까?
- 28. 루아는 유니 코드를 지원합니까?
- 29. Linux 시스템 모니터가 프로세스 통계를 얻는 방법
- 30. HTML 제작자가 문제가 있습니까?
Java가 UTF-16을 사용하는 이유는 무엇입니까? 그것은 훨씬 늦은 작업입니다. –
Windows와의 통합을 향상시킬 수 있습니다. 전형적인 "좋은"(적어도, 아주 유효한 것)은 많은 나쁜 설계 결정에 대한 이유입니다. – ypnos
필자는 Windows 호환성이 그다지 중요하지 않다고 생각합니다. (파이썬은 또한 윈도우에서 실행될 때 유니 코드 문자열을 위해 UTF-16을 사용합니다.) 그러나 자바에서 유니 코드를 사용하는 나쁜 디자인의 간단한 요소가 있습니다. 자바가 시스템의 '기본 인코딩' 결코 옳은 일이 아닙니다. 자바는 당신이 다루기 힘든 이식성이없는 charset 코드를 작성하도록 장려한다. – bobince