저는 StreamReader/Writer의 생성자를보고 있는데, 기본적으로 UTF8을 사용합니다. 누구나 이것이 왜 있는지 압니까? 나는 Unicode를 기본으로하는 것이 더 안전한 방법이라고 생각했을 것이다..NET Framework StreamReader/Writer는 기본적으로 UTF8 인코딩을 사용합니까?
답변
UTF-8은 모든 ASCII 문서에서 작동하며 일반적으로 UTF-16보다 압축되어 있지만 여전히 유니 코드 전체를 포함합니다. 나는 UTF-8이 인데,은 UTF-16보다 더 흔하다고 말한다. BOM이없고 명시 적 인코딩이 지정되지 않은 경우 XML의 기본값이기도합니다.
왜 UTF-16으로 기본 설정하는 것이 더 좋을 것이라고 생각하십니까? (그게 Encoding.Unicode
입니다.)
EDIT : 정확히 UTF-8이 처리 할 수있는 것에 대해 혼란 스럽습니다. This page은 특정 유니 코드 문자가 인코딩 된 방법을 포함하여 매우 명확하게 설명합니다. 가변 폭 인코딩이지만 유니 코드 전체를 다룹니다.
UTF8 은 유니 코드, 특히 유니 코드 인코딩 유형 중 하나입니다.
더 중요한 것은 ASCII와의 하위 호환성 플러스는 XML 및 HTML
다른 모든 것들은 이미 말했듯이, UTF-8은 유니 코드 내의 인코딩 표준입니다. UTF-8은 다양한 유니 코드 문자를 인코딩하기 위해 가변 바이트 수를 사용합니다.
모든 ASCII 문자는 그대로 표현되므로 ASCII 파일을 읽을 수 있습니다. 스트림의 바이트가 8 번째 비트 (최상위 비트> 127)를 설정하자마자 판독기가 다음 바이트와 결합하여 < 128이 될 때까지이 조합을 트리거합니다. 조합은 1 문자로 간주됩니다.
LATIN-1 (ANSI)에는 2자를 사용하여 인코딩 된 문자가 있습니다. 예를 들어, é는 e 및 '로 인코딩됩니다. 따라서 길이 ('é')는 2입니다.
Windows는 인코딩 가능한 문자를 64K로 제한하는 UTF-16을 사용합니다. 이는 모든 Unicde 문자를 의미하지는 않습니다. 당분간 UTF-32는 모든 문자를 허용하지만 인위적으로도 제한됩니다. 그리고 모두는이 앞의 0으로, ASCII 상향 호환되지 않습니다 :
A = ASCII h41 = UTF-8 h41 = UTF-16 h0041 = UTF-32 h00000041
도 조금 큰 엔디안 인코딩이 있습니다
A = UTF-16 big endian h0041 = UTF-16 little endian h4100
하여 파일을 저장 UTF16 또는 UTF32을 사용하여 상상해보십시오. ASCII 및 UTF-8 (ASCII 문자 만 사용하는 경우 UTF-8)과 비교하여 (텍스트 파일의 경우) 크기가 두 배 또는 네 배로됩니다. UTF-8은 향후 확장을 위해 유니 코드 표준의 모든 문자를 허용 할뿐만 아니라 효율적으로 공간을 절약합니다.
일반적으로 파일의 처음 2 바이트 인 BOM 또는 바이트 순서 표시기는 어떤 인코딩 표준이 사용되는지 알려줍니다. 누락 된 경우 XML 및 StreamRedaer는 UTF-8을 사용합니다. 이것은 ASCII 파일에 BOM이 없으므로 대부분의 경우 올바르게 읽히므로 다시 나타납니다.이것은 모든 LATIN-1을 사용하는 파일에는 적용되지 않을 수 있습니다.
- 1. .NET XmlIgnore 기본적으로?
- 2. 기본적으로 .NET 버전은 무엇입니까?
- 3. .NET Framework 버전
- 4. std :: string.c_str()은 어떤 인코딩을 사용합니까?
- 5. System.Windows.Forms.RichTextBox는 유니 코드 문자에 어떤 인코딩을 사용합니까?
- 6. 생성 된 CSV 보고서에 UTF8 인코딩을 적용하려면 어떻게해야합니까?
- 7. 문자열에 utf8 디코드 또는 인코딩을 적용해야하는지 여부를 감지하는 방법은 무엇입니까?
- 8. UTF8 인코딩을 사용하여 문자열을 바이트로 변환하는 Lua 라이브러리가 있습니까?
- 9. Grails는 기본적으로 Spring Dependency Injection을 사용합니까
- 10. php는 기본적으로 브라우저에서 iso-8859-1 인코딩을 설정합니다.
- 11. ASP.NET 4에서 기본적으로 HTML 인코딩을 활성화 할 수 있습니까?
- 12. .NET Framework 2.0 및 .NET Framework 3.5를 사용하는 경우 .NET Framework 3이 필요합니까?
- 13. .NET Framework 4와 .NET Framework 3.5의 새로운 기능 WCF는 무엇입니까?
- 14. .NET Framework 3.0 Windows XP SP3 (.NET Framework 4.0 포함)
- 15. .NET Framework 설치
- 16. .NET Framework 종속성
- 17. .NET Framework 버전
- 18. .Net Framework Redistributable
- 19. .Net Framework 설치
- 20. 유닉스 on .NET Framework
- 21. .NET Framework - 업그레이드시기
- 22. .NET Framework 3.5의 OleDbPermission
- 23. .net framework 4 redistributable
- 24. .NET Framework requiredRuntime 플래그
- 25. .NET Compact Framework - 데이터베이스
- 26. .net framework 4.0 documentation
- 27. .net Compact Framework 4.0
- 28. .NET Framework 및 COM
- 29. .NET Framework 스레드 "ancestry"
- 30. .NET Framework 업그레이드
.NET은 기본적으로 문자열에 UTF16을 사용하기 때문에 UTF8에서 처리 할 수없는 문자를 출력하려고하는 시나리오 (아마도 다른 문화권에서)가 될 것입니다. – Quibblesome
UTF-8이 모든 유니 코드 문자를 처리합니다. –
@Quarrel UTF-8은 가변 길이 문자 인코딩이며 유니 코드 표준에서 _any_ 문자를 나타낼 수 있습니다. 더 많은 옥텟 (8 비트 바이트)을 사용하며 최대 4 개까지 사용할 수 있습니다. –