programing

.NET Core는 Windows 1252에 대해 알지 못합니다. 해결 방법은 무엇입니까?

sourcejob 2023. 5. 9. 22:37
반응형

.NET Core는 Windows 1252에 대해 알지 못합니다. 해결 방법은 무엇입니까?

이 프로그램은 에 대해 컴파일할 때 제대로 작동합니다.NET 4이지만 에 대해 컴파일할 때는 그렇지 않습니다.NET 코어.인코딩이 지원되지 않는 오류는 이해하지만 수정 방법은 이해하지 못합니다.

Public Class Program
    Public Shared Function Main(ByVal args As String()) As Integer
        System.Text.Encoding.GetEncoding(1252)
    End Function
End Class

이 작업을 수행하려면 에서 인스턴스를 등록해야 합니다.System.Text.Encoding.CodePages꾸러미

그렇게 하려면 시스템을 설치합니다.텍스트, 인코딩.CodePages 패키지:

dotnet add package System.Text.Encoding.CodePages

(암묵적으로 또는 명시적으로 실행한 후)dotnet restore전화할 수 있습니다.

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
var enc1252 = Encoding.GetEncoding(1252);

또는 하나의 코드 페이지만 필요한 경우 등록 없이 직접 코드 페이지를 받을 수 있습니다.

var enc1252 = CodePagesEncodingProvider.Instance.GetEncoding(1252);

다음과 같이 적으십시오.

<ItemGroup>
    <PackageReference Include="System.Text.Encoding.CodePages" Version="4.3.0" />
</ItemGroup>

csproj에서.

패키지 콘솔에 '도트넷 복원'을 기록하고 어셈블리를 복원합니다.

샘플용으로 이 코드를 작성합니다.

public class MyClass
{
    static MyClass()
    {
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
    }
}

다음은 다음에 대한 설명입니다.

윈도우즈 데스크톱용 .NET Framework는 대규모 유니코드 및 코드 페이지 인코딩 세트를 지원합니다.그러나 NET Core는 다음 인코딩만 지원합니다.

  • ASCII(코드 페이지 20127). 인코딩으로 반환됩니다.ASCII 속성.
  • ISO-8859-1(코드 페이지 28591).
  • UTF-7(코드 페이지 65000). 인코딩으로 반환됩니다.UTF7 속성.
  • UTF-8(코드 페이지 65001). 인코딩으로 반환됩니다.UTF8 속성.
  • UTF-16 및 UTF-16LE(코드 페이지 1200). 인코딩으로 반환됩니다.유니코드 속성.
  • UTF-16BE(코드 페이지 1201). 유니코드 인코딩을 호출하여 인스턴스화됩니다.유니코드 인코딩 또는 유니코드 인코딩입니다.큰 Endian 값이 true인 Unicode Encoding 생성자입니다.
  • UTF-32 및 UTF-32LE(코드 페이지 12000). 인코딩으로 반환됩니다.UTF32 속성.
  • UTF-32BE(코드 페이지 12001). 빅Endian 매개 변수를 가진 UTF32E 인코딩 생성자를 호출하고 메서드 호출에 true 값을 제공하여 인스턴스화됩니다.

코드 페이지 20127 이외에는 코드 페이지 인코딩이 지원되지 않습니다.CodePagesEncodingProvider클래스 확장EncodingProvider이 코드 페이지를 사용할 수 있도록 설정합니다.NET 코어.

따라서 다음과 같은 추가 인코딩을 사용하려면 인코딩 공급자를 먼저 등록해야 합니다.Windows-1252.

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

CodePagesEncodingProvider 코드 페이지에 대한 인코딩 공급자에 대한 액세스 권한을 제공합니다. 그렇지 않으면 바탕 화면에서만 사용할 수 있습니다.NET Framework.

그런 다음 더 많은 인코딩을 찾을 수 있고 다음을 얻을 수 있습니다.Windows-1252too:too:too:too:

Encoding win1252 = Encoding.GetEncoding(1252);

로 다에대참필다니합요가조음에 대한 합니다.System.Text.Encoding.CodePages.dll용할을 CodePagesEncodingProvider일부 .net 버전에서는 프로젝트에 nuget 패키지를 추가해야 합니다.

Install-Package System.Text.Encoding.CodePages

언급URL : https://stackoverflow.com/questions/37870084/net-core-doesnt-know-about-windows-1252-how-to-fix

반응형