2016-06-16 14 views
24

Ten program działa dobrze po skompilowaniu dla .NET 4, ale robi to po skompilowaniu dla .NET Core. Rozumiem, że błąd związany z kodowaniem nie jest obsługiwany, ale nie sposób go naprawić..NET Core nie wie o Windows 1252, jak to naprawić?

public class Program 
{ 
    public static int Main(string[] args) 
    { 
     System.Text.Encoding.GetEncoding(1252); 
    } 
} 
+0

C# jest artefaktem MCV tutaj; Tag nie należy. – Joshua

Odpowiedz

41

Aby to zrobić, trzeba register instancję CodePagesEncodingProvider z pakietu System.Text.Encoding.CodePages.

Aby to zrobić, należy zainstalować the System.Text.Encoding.CodePages package:

dotnet add package System.Text.Encoding.CodePages 

Następnie (po jawnie lub niejawnie działa dotnet restore) można nazwać:

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

Ewentualnie, jeśli tylko trzeba, że ​​strona jeden kod , możesz go uzyskać bezpośrednio, bez rejestracji:

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

proszę napisać:

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

w csproj.

W konsoli pakietów napisz "dotnet restore", przywróć złożenia.

i wite ten kod próbki:

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

Wersja NET CORE dla tego pytania to 1.0 (jak powinno być oczywiste od daty); ta odpowiedź nie działa. – Joshua

+0

Wiem, że była to zła wersja (działało to dla mnie w wersji 1.1, ale działało to jak wdzięk Gracias amigo. – radpin

Powiązane problemy