문자 집합 및 마샬링
char
값, string
개체 및 System.Text.StringBuilder
개체가 마샬링되는 방식은 P/Invoke 또는 구조체 중 하나의 CharSet
필드 값에 따라 다릅니다. P/Invoke를 선언할 때 DllImportAttribute.CharSet 필드를 설정하여 P/Invoke의 CharSet
를 설정할 수 있습니다. 형식에 대해 CharSet
을 설정하려면 클래스 또는 구조체 선언의 StructLayoutAttribute.CharSet 필드를 설정합니다. 이러한 특성 필드가 설정되지 않은 경우 사용할 CharSet
는 언어 컴파일러에서 결정합니다. C#, Visual Basic 및 F#은 기본적으로 Ansi 문자 집합과 동일한 동작을 갖는 None 문자 집합을 사용합니다.
System.Runtime.InteropServices.DefaultCharSetAttribute가 C# 또는 Visual Basic 코드의 모듈에 적용된 경우 C# 또는 Visual Basic 컴파일러는 기본적으로 CharSet.None
을 사용하는 대신 제공된 CharSet
를 내보냅니다. F#은 DefaultCharSetAttribute
를 지원하지 않으며 기본적으로 항상 CharSet.None
을 내보냅니다.
다음 표에서는 각 문자 집합과 해당 문자 집합으로 마샬링할 때 문자 또는 문자열을 나타내는 방법 간의 매핑을 보여 줍니다.
CharSet 값 |
Windows | Unix에서 .NET Core 2.2 및 그 이전 | Unix에서 .NET core 3.0 이상 및 Mono |
---|---|---|---|
Ansi |
char (시스템 기본 Windows(ANSI) 코드 페이지) |
char (UTF-8) |
char (UTF-8) |
Unicode |
wchar_t (UTF-16) |
char16_t (UTF-16) |
char16_t (UTF-16) |
Auto |
wchar_t (UTF-16) |
char16_t (UTF-16) |
char (UTF-8) |
문자 집합을 선택할 때 네이티브 표현에 필요한 표현을 알고 있어야 합니다.
.NET
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기