세계화 고정 모드의 문화권 만들기 및 대/소문자 매핑

이 호환성이 손상되는 변경은 다음 두 가지 방법으로 “세계화 고정 모드”에 영향을 미칩니다.

  • 이전에는 문화권 이름이 BCP-47을 준수하는 한, .NET은 세계화 고정 모드에서 모든 문화권을 만드는 것이 허용되었습니다. 그러나 고정 문화권 데이터가 실제 문화권 데이터 대신 사용되었습니다. .NET 6부터는 세계화 고정 모드에서 고정 문화권 이외의 문화권을 만들면 예외가 throw됩니다.
  • 이전에는 세계화 고정 모드가 ASCII 문자에 대한 대/소문자 매핑만 지원했습니다. .NET 6부터 세계화 고정 모드는 모든 유니코드 정의 문자에 대한 전체 대/소문자 매핑 지원을 제공합니다. 대/소문자 매핑은 문자열 비교, 문자열 검색, 대문자 또는 소문자 문자열과 같은 작업에 사용됩니다.

세계화 고정 모드는 세계화 지원이 필요하지 않은 앱에 사용됩니다. 즉, 앱이 문화권별 데이터 및 동작에 액세스하지 않고 실행됩니다. 세계화 고정 모드는 일부 Docker 컨테이너(예: Alpine 컨테이너)에서 기본적으로 사용하도록 설정됩니다.

이전 동작

세계화 고정 모드가 사용되는 이전 .NET 버전에서는:

  • 앱이 고정 문화권이 아닌 문화권을 만들 경우, 작업이 성공하지만 반환된 문화권은 항상 실제 문화권 데이터 대신 고정 문화권 데이터를 사용합니다.

  • 대/소문자 매핑이 ASCII 문자에 대해서만 수행되었습니다. 예시:

    if ("Á".Equals("á", StringComparison.CurrentCultureIgnoreCase)) // Evaluates to false.
    

새 동작

세계화 고정 모드가 사용되는 .NET 6부터는:

  • 앱이 고정 문화권이 아닌 문화권을 만들려고 시도하면 CultureNotFoundException 예외가 throw됩니다.

  • 대/소문자 매핑이 모든 유니코드 정의 문자에 대해 수행됩니다. 예시:

    if ("Á".Equals("á", StringComparison.CurrentCultureIgnoreCase)) // Evaluates to true.
    

도입된 버전

.NET 6

변경 이유

문화권 관련 문제를 좀 더 쉽게 진단할 수 있도록 문화권 만들기 변경이 도입되었습니다. 일부 사용자는 세계화 고정 모드가 사용되는 환경에서 자신의 앱이 실행되고 있음을 인식하지 못합니다. 이들은 예기치 않은 동작을 경험할 수 있으며, 세계화 고정 모드와 연결되지 않으므로 문제를 진단하기가 어렵습니다.

세계화 고정 모드에서 유용성과 환경을 개선하기 위해 전체 대/소문자 매핑 지원이 도입되었습니다.

대부분의 경우 아무 작업도 필요하지 않습니다. 그러나 이전 문화권 만들기 동작을 원하는 경우 세계화 고정 모드에서 모든 문화권 만들기를 허용하도록 런타임 구성 옵션을 설정할 수 있습니다. 자세한 내용은 미리 정의된 문화권을 참조하세요.

영향을 받는 API

참고 항목